1. 程式人生 > >C++實驗 實驗3 類和物件 4

C++實驗 實驗3 類和物件 4

設計一個float型別的陣列類CFltArray,要求CFltArray可以進行如下操作:

(1)可以重置陣列的大小(Resize)

(2)可以通過下標返回陣列元素,並對下標越界情況進行檢查

(3)可以利用已知陣列物件對整個陣列賦值和初始化

(4)可以返回當前陣列的大小(Size)

最後用資料驗證你所設計的類。

提示:

(1)利用已知陣列物件對整個陣列賦值,說明要求過載等號運算子

(2)利用已知陣列物件對整個陣列初始化,說明要求過載拷貝建構函式

(3)要求用指標儲存陣列物件中元素

#include<iostream>
#include<stdlib.h>

using namespace std;

class CFltArray
{
public:
    CFltArray(int sz);
    CFltArray(CFltArray &A);
    float& operator = (CFltArray A);
    float& operator [] (int i);
    void ReSize(int sz); 
    int GetSize();
    ~CFltArray();
    
private:
    int size;
    float *Arr;
};

//預設建構函式 
CFltArray::CFltArray(int sz)
{
    if(sz <= 0)
        exit(1);
    size = sz;
    Arr = new float[size];     
}

//解構函式 
CFltArray::~CFltArray()
{
    delete [] Arr;
}

//重置陣列的大小
void CFltArray::ReSize(int sz)
{
    size = sz;
    Arr = new float[size];        
}

//通過下標返回陣列元素
float& CFltArray::operator [](int i)
{
    if(i < 0 || i > size - 1)  
    {
        cout << "陣列下標越界!" << endl; 
        exit(1);
    }
    return Arr[i];  
}

//返回當前陣列的大小
int CFltArray::GetSize()
{
    return size;    
}

CFltArray::CFltArray(CFltArray &A)
{
    size = A.GetSize();
    Arr = new float[size]; 
    
    float *ap = A.Arr;
    float *tp = Arr;
    
    for(int i = 0; i < size; i++)
        *tp++ = *ap++;   
        
    cout << "拷貝建構函式被呼叫" << endl;
}

float& CFltArray::operator = (CFltArray A)
{
    size = A.size;
    Arr = new float[size];
      
    float *ap = A.Arr;
    float *tp = Arr;
      
    for(int i = 0; i<size; i++)
        tp[i] = ap[i];
    
    return Arr[size];
}

int main(void)
{
    CFltArray array(10); 
    for(int i = 0; i < 10; i++)
        array[i] = i;
    for(int i = 0; i < 10; i++)
        cout << array[i] << "  ";
    cout << endl;
    
    CFltArray Aarray = array;
    cout << "初始化後陣列大小: " << Aarray.GetSize() << endl;
    cout << Aarray[8] << endl;
    
    array.ReSize(20);
    cout << "重置後陣列大小: " << array.GetSize() << endl; 
    
    system("pause");
    return 0;    
}


相關推薦

C++實驗 實驗3 物件 4

設計一個float型別的陣列類CFltArray,要求CFltArray可以進行如下操作: (1)可以重置陣列的大小(Resize) (2)可以通過下標返回陣列元素,並對下標越界情況進行檢查 (3)可以利用已知陣列物件對整個陣列賦值和初始化 (4)可以返回當前陣列的大小(

1.面向過程程式設計 2.面向物件程式設計 3.物件 4.python 建立物件 如何使用物件 5.屬性的查詢順序 6.初始化函式 7.繫結方法 與非繫結方法

1.面向過程程式設計 面向過程:一種程式設計思想在編寫程式碼時 要時刻想著過程這個兩個字過程指的是什麼? 解決問題的步驟 流程,即第一步幹什麼 第二步幹什麼,其目的是將一個複雜的問題,拆分為若干的小的問題,按照步驟一一解決,也可以說 將一個複雜的問題,流程化(為其制定一個固定的實現流程),從而變得簡單化例如

C++實驗 實驗3 物件 1

定義一個圓類,計算圓的面積和周長。 要求:分別用成員函式和友元函式來求圓的面積和周長。 #include<iostream> using namespace std; const double PI = 3.14159; class Circle

C++實驗 實驗3 物件 3

定義日期型別Date。要求有以下成員: (1)可以設定日期; (2)日期加一天操作; (3)輸入函式,輸入格式為:XXXX XX  XX,如2010 4 13; (4)輸出函式,輸出格式為:XXXX年XX月XX日,如2010年4月11日。 #include<io

實驗3 物件

    本次實驗主要圍繞類和物件,按照課本所述類是一種抽象機制,用於描述一類事物的共同屬性和行為,物件則是該類的某一特定實體或者例項,初次聽這些描述其實比較晦澀,看到例項就比較易懂了,C++中的類和C語言中的結構體從形式上看很像,但是還含有結構體沒有的內容,類中有外部介面和私

Java基礎 實驗二:物件

1.實驗目的 掌握類的宣告、物件的建立、方法的定義和呼叫、建構函式的使用。 2.實驗內容 1)定義一個表示學生資訊的類Student,要求如下: ① 類Student的成員變數:       sNO 表示學號;      

Java 實驗案例(物件篇)

實驗任務     任務一:手機類的封裝     任務二:基於控制檯的購書系統     任務三:簡單的投票程式 實驗內容 任務一:手機類的封裝     任務目的     理解和掌握面向物件的設計過程     掌握類的結構和定義過程     掌握構造方法及其過載    

C++學習筆記 (二) ---- 物件

①、類和物件 類的定義,如下: class Student{ public: //成員變數 char *name; int age; float score; //成員函式 void say(){ cout<<

kotlin(3):物件以及其他的概念屬性

類和物件 類宣告由類名,類頭(指定其型別引數,主建構函式等)和由大括號包圍的類體構成,類頭和類體都是可選的,如果一個類沒有類體,可以省略花括號.   1.主建構函式 在kotlin中的一個類可以有一個主建構函式和多個次建構函式,主建構函式是類頭的一部分,跟在類名後.

.net(C#)中的物件

比較簡單,不過是很認真寫的,希望對看到的同學有所幫助! 首先說下類:       類呢,就是一類事物的抽象,抽象的過程中把,這類事物共有的、一般性的特徵、行為啦,抽象成類中的屬性和方法。 舉個例子: 就說人吧,可以把人作為一個類,人這個類的特徵:兩條腿、兩個胳膊、兩個眼睛等

C++第八章 物件(二)

【專案1 - 三角形類】下面設計一個三角形類,請給出各成員函式的定義 #include<iostream> #include<cmath> using namespace std; class Triangle {public: void Set

C++(五)物件的應用(日期實現)

可以實現日期之間的加加,減減,大小比較等 直接看程式碼 函式的宣告 #pragma once #include <iostream> using namespace std; class Date{ public: Date(in

C++實驗3_3 物件(3)

五、實驗結果及分析 1. 構造了一個CPU! CPU開始執行! CPU停止執行! 析構了一個CPU! 3. #include <iostream.h> enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7

C++第3實驗 物件

一、問題及程式碼 /* * 檔名稱: 靜態成員應用 * 作 者:姜小萌 * 完成日期:2016年4月8日 * 版 本 號:vc6.0 * 對任務及求解方法的描述部分:運用類和物件完成 * 輸入描述:無 * 問題描述: 設計含有靜態資

C++實驗2-物件1

一、問題及程式碼 /* * 檔名稱: C++ * 作 者: 尚超 * 完成日期:2016年3月11日 * 版 本 號:v1.0 * 對任務及求解方法的描述部分: * 輸入描述: * 問題描述: 輸入任意三個數,按從小到大輸出 * 程式輸出: * 問題分

c++實驗3對象

code 實現 pub -s char display art 圖片 lose 實 驗 3: part 1:驗證 part 2:graph #include <iostream> #include "graph.h" using nam

C++ 實驗3 對象

pub n) mage Once include oid con rap efi Part 2 #ifndef GRAPH_H #define GRAPH_H class Graph { public: Graph(char ch, int n);

實驗3 對象

具體實現 .sh code 原本 alt src ret 運行 應用 實驗結論 4-11 定義並實現一個矩形類,有長,寬兩個屬性,由成員函數計算矩形的面積。 #include <iostream> using namespace std; class rect

物件】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C

題目描述: 求1+2+3+...+n,要求不能使用乘除法(數學公式)、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C). 分析:這道題雖然常用的方式都給禁掉了,但是可以使用我們c++學過的類和物件,通過使用類和靜態來完成。常規情況下,從1+到n,

Beginng_Java7(譯):發現物件(第二章3.4.5節)(完)

多型 一些現實世界的實體可以改變他們的形式。 例如,水(在地球上而不是星際空間)自然是液體,但在冷凍時會變成固體,在加熱到沸點時會變成氣體。 諸如經歷變態的蝴蝶之類的昆蟲是另一個例子。 改變形式的能力被稱為多型,並且對於在程式語言中建模是有用的。 例如,通過引入