描述
定義乙個類matrixadd,其資料成員為乙個m*n的矩陣(即二維陣列),其中m和n是兩個預先定義的符號常數。通過過載運算子」+」和」=」,實現矩陣相加和賦值運算。
具體要求如下:
(1)私有資料成員
int a[m][n]:存放二維陣列值。
(2)公有成員函式
matrixadd():預設建構函式,空操作。
matrixadd(int x[m][n]):建構函式,用x初始化資料成員a。
matrixadd operator+(matrixadd &b):過載加法運算子」+」實現兩個矩陣相加。 l
void operator=(matrixadd &b):過載賦值運算子」=」實現兩個矩陣賦值。 l
定義「<<」和「>>」運算子過載函式,實現矩陣的輸入輸出。
(3)在主函式中完成對該類的測試。
注意:在程式的開頭,定義符號常數m和n的值分別為2和3,表示二維陣列的行數和列數。在主函式中定義整型陣列a[m][n]和b[m][n],它們的初值取上述示例值。定義三個matrixadd類的物件a、b和c,並用陣列a和b初始化物件a和b。將a加b後賦值給c。然後輸出物件c的資料成員a矩陣的值。
輸入兩個2x3矩陣
輸出兩個矩陣之和
樣例輸入
1 2 3
4 5 6
2 2 2
3 3 3
樣例輸出
3 4 5
7 8 9
#include using namespace std;
const int m = 2;
const int n = 3;
class matrixadd
//預設構造引數,需要它是因為有被定義時無引數的物件 c ,用時需要加{}
matrixadd(int x[m][n]) //帶參建構函式,main函式裡規定的值->形參x[m][n]->實參a[m][n]
}} matrixadd operator+(matrixadd &b);
void operator=(matrixadd b);//void函式不能加&,不知道為什麼
friend istream& operator>>(istream& i, matrixadd& d1);
friend ostream& operator<<(ostream& o, matrixadd& d2);
private:
int a[m][n];
};matrixadd matrixadd::operator+(matrixadd &b)等價於a.a[m][n].matrixadd( b.a[m][n] )
} return m;
}void matrixadd::operator=(matrixadd b) }}
istream& operator>>(istream& i, matrixadd& d1)
} return i;
}ostream& operator<<(ostream& o, matrixadd& d2)
o << endl;
} return o;
}int main()
, };
int b[m][n] = , };
matrixadd a(a), b(b), c;
c = a + b;//過載「=」的意義在此.但不過載也無所謂,直接用於這樣的賦值。
//系統已經為每乙個新宣告的類過載了乙個賦值運算子,作用是逐個複製類的資料成員
//但如果資料成員包括指向 動態分配記憶體 的指標成員時,需要過載
/*c.show();*/
cout << c;
system("pause");
return 0;
}
實驗七,運算子過載
一 實驗目的和要求 熟悉運算子過載的定義和使用方法 二 實驗內容 1.除錯下列程式 sy7 1.cpp includeusing namespace std class complex complex double r complex double r,double i complex operat...
實驗七 運算子過載
一 實驗目的和要求 熟悉運算子過載的定義和使用方法 二 實驗內容 1.除錯下列程式 cpp view plain copy sy7 1.cpp include using namespace std class complex complex double r complex double r,do...
實驗七運算子過載
實驗目的和要求 熟悉運算子過載的定義和使用方法 實驗內容 1.除錯下列程式 輸出結果 2.除錯下列程式 寫出程式的輸出結果,並解釋 分析與討論 結合上題中的程式總結運算子過載的形式。答 運算子函式過載一般有兩種形式 過載為類的成員函式和過載為類的非成員函式。非成員函式通常是友元。可以把乙個運算子作為...