#include #include using namespace std;
class array2
//1、陣列建立和**
//建立時,通過先分配每乙個下標的n個指標,現為對應的每個指標分配相應的記憶體;
//**時,對應的**內在的時候需要反過來**;
array2(int height, int width):h(height),w(width) }
int &operator()(int i, int j)
//2、的過載,它只能有乙個引數
//如果括號裡有兩個引數,像這樣 (int i,int j)會報錯,提示只能有乙個。不知為何
//這裡為什麼只返回data[i]就行了呢?因為data[i]相當於陣列名,返回去之後其實是這樣的(data[i])[j]
int *operator(int i)
//3、賦值運算子的過載
//這裡如果不返回引用,那麼返回的值將會賦值給乙個臨時物件c。c的東西就是呼叫了預設複製建構函式,複製*this所得到的。
//而預設建構函式對指標不複製?是淺拷貝,所以只是h和w進行了複製,data根本連複製都沒有,都不能算淺拷貝,就是不拷貝。
//如果返回引用的話,就不用呼叫複製建構函式了!!!!
array2& operator=(const array2 &rhs)
h = rhs.h;
w = rhs.w;
data = new int*[h];
for (int i = 0; ifor (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
data[i][j] = rhs.data[i][j];
return *this;
} ~array2() };
int main()
cout << endl;
} cout << "next" << endl;
array2 b;
b = a;
for (i = 0; i < 3; ++i)
cout << endl;
} return 0;
}
017 第四周程式填空題3
描述 寫乙個二維陣列類 array2,使得下面程式的輸出結果是 0,1,2,3,4,5,6,7,8,9,10,11,next 0,1,2,3,4,5,6,7,8,9,10,11,程式 include include using namespace std class array2 int main ...
程式設計與演算法(三)004 第四周程式填空題3
這道題目最然不是很難,也折騰了挺久,二維陣列的建立需要定義乙個指向指標的指標 int p 過載下標符號之後,p i 成了行入口位址,與一維陣列陣列名同意 p i j 可直接取元素 類中宣告指標作為資料成員,應在建構函式予以定義!private int p int hang,lie public ar...
小程式(第四周)
include include void main int max 20 2 scanf d a 資料組數 if a 0 for i 0 i0 j max i 0 num i 0 while num i z max i 0 max i 1 num i z z 0 for i 0 i這道題的輸入輸出樣...