運算子過載程式設計題3(C 程式設計第4周)

2021-09-11 21:32:23 字數 1863 閱讀 5714

寫乙個二維陣列類 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;

// 在此處補充你的**

int main()

cout << endl;

}cout << "next" << endl;

array2 b; //呼叫無參建構函式

b = a; //呼叫運算子=過載函式

for( i = 0;i < 3; ++i )

cout << endl;

}return 0;

}

需要編寫乙個類,這個類包括:

#include #include using namespace std;

// **開始

class array2

//建構函式

array2(int pararow, int paracolumn) :row(pararow), column(paracolumn)

//複製建構函式

array2(array2& a) :row(a.row), column(a.column)

~array2()

//運算子=過載

array2& operator= (const array2 &a)

if (ptr)

deleteptr;

if (a.ptr)

else

return *this;

} //運算子過載

int* operator(int i)

//運算子()過載

int& operator()(int i, int j)

//**結束

};int main()

cout << endl;

} cout << "next" << endl;

array2 b;

b = a;

for (i = 0; i < 3; ++i)

cout << endl;

} system("pause");

return 0;

}

int* operator(int i)
分析:

main()函式中的a[i][j]等價於(a.[ ](i)).[j];

先呼叫該函式將指標指向二維陣列的第i行的開頭,返回的值是int* 指標,假定為p;

p[j]得到第i行的第j個值。

int& operator()(int i, int j)
分析:

main()函式中的a(i,j)等價於a.operator()(i,j);

return的結果是ptr[i*column+j],兩個for迴圈實現從ptr[0]到ptr[(i-1)*column+j-1],也就遍歷了二維陣列中所有的數;

返回值型別是int & ;

array2& operator= (const array2 &a)

if (ptr)

deleteptr;

if (a.ptr)

else

return *this;

}

STL程式設計題3(C 程式設計第9周)

描述 現有一整數集 允許有重複元素 初始為空。我們定義如下操作 add x 把x加入集合 del x 把集合中所有與x相等的元素刪除 ask x 對集合中元素x的情況詢問 對每種操作,我們要求進行如下輸出。add 輸出操作後集合中x的個數 del 輸出操作前集合中x的個數 ask 先輸出0或1表示x...

類與物件程式設計題3(C 程式設計第3周)

問題描述 下面程式的輸出結果是 5,55,5 請填空 include using namespace std class base class big int main 輸入無 輸出 5,55,5樣例輸入 無樣例輸出 5,5 5,5提示 1.所缺 具有如下形式 big big 2.提交作業時只提交補...

C 程式設計例項 運算子過載

實驗15 運算子過載 實驗目的 通過本實驗,掌握運算子過載的概念。實驗要求 熟練掌握運算子過載的使用技術。實驗內容 實現下面兩個程式,注意 的過載用法。1 定義運算子過載函式為友元函式。include include class a a int i,int j x i y j a operator ...