1樓:大野瘦子
**如下:
#include
#include
using namespace std;
class maxtrix
private:
int maxtrix[2][3];
public:
maxtrix()
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
maxtrix[i][j]=3*(i)+j+1;
void setmaxtrix()
cout<<"輸入2維陣列,數字間以空格隔開" for(int j=0;j<3;j++) cin>>maxtrix[i][j]; void outputmaxtrix() cout<<"矩陣輸出:" for(int j=0;j<3;j++) cout maxtrix m; for(int i=0;i<2;i++) for(int j=0;j<3;j++) m.maxtrix[i][j]=this->maxtrix[i][j]+max.maxtrix[i][j]; return m; friend maxtrix operator-(const maxtrix& op1,const maxtrix& op2); maxtrix operator-(const maxtrix& op1,const maxtrix& op2) maxtrix m; for(int i=0;i<2;i++) for(int j=0;j<3;j++) m.maxtrix[i][j]=op1.maxtrix[i][j]-op2.maxtrix[i][j]; return m; void main() maxtrix m; maxtrix op1,op2; op2.setmaxtrix(); m.outputmaxtrix(); op1.outputmaxtrix(); op2.outputmaxtrix(); m=op1+op2; m.outputmaxtrix(); op1.outputmaxtrix(); op2.outputmaxtrix(); m=op1-op2; m.outputmaxtrix(); op1.outputmaxtrix(); op2.outputmaxtrix(); 注意事項 c++允許在同一個作用域中的某個函式和運算子指定多個定義,分別稱為函式過載和運算子過載。 過載宣告是指一個與之前已經在該作用域內宣告過的函式或方法具有相同名稱的宣告,但他們的引數列表和定義(實現)不相同。當呼叫一個過載函式或過載運算子時,編譯器通過把函式所使用的引數型別和定義中的引數型別進行比較,決定選用最合適的定義。 在同一個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(引數個數,型別或者順序)必須不同,不能僅通過返回型別的不同來過載函式。 overload.cpp #include using namespace std; class printdata public: void print(int i) cout << "integer is : " << i << endl; void print(double f) cout << "flota is : " << f << endl; void print(char c) cout << "char is : " << c << endl; int main() printdata pd; pd.print(5); pd.print(300.1); char c = "hello c++"; pd.print(c); return 0; 執行結果: exbot@ubuntu:~/wangqinghe/c++/20190807$ vim overload.cpp exbot@ubuntu:~/wangqinghe/c++/20190807$ g++ overload.cpp -o overload exbot@ubuntu:~/wangqinghe/c++/20190807$ ./overload integer is : 5 flota is : 300.1 char is : hello c++ 2樓:娛樂小八卦啊 此題考察的知識點是:類的成員函式。**如下: #include using namespace std; class matrix //定義matrix類 {public: matrix(); //預設建構函式 friend matrix operator+(matrix &,matrix &); //過載運算子「+」 void input(); //輸入資料函式 void display(); //輸出資料函式 private: int mat[2][3]; 擴充套件資料 c++ 允許在同一作用域中的某個函式和運算子指定多個定義,分別稱為函式過載和運算子過載。過載宣告是指一個與之前已經在該作用域內宣告過的函式或方法具有相同名稱的宣告,但是它們的引數列表和定義(實現)不相同。 當呼叫一個過載函式或過載運算子時,編譯器通過把所使用的引數型別與定義中的引數型別進行比較,決定選用最合適的定義。選擇最合適的過載函式或過載運算子的過程,稱為過載決策。 在同一個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同。您不能僅通過返回型別的不同來過載函式。 3樓:匿名使用者 懶人是很多的。。同樣足見現在的通訊的資源獲取手段比我們上學那會兒多多了 4樓:匿名使用者 #include #include using namespace std; class maxtrix}} void setmaxtrix()}} void outputmaxtrix() }return m; }friend maxtrix operator-(const maxtrix& op1,const maxtrix& op2); };maxtrix operator-(const maxtrix& op1,const maxtrix& op2) }return m; }void main() 5樓:匿名使用者 你學習一下操作符過載那一章節就能完成了 有兩個矩陣a和b,均為2行3列。求兩個矩陣之和。過載運算子「+」使之能用於矩陣相加。如何寫出程式? 6樓:匿名使用者 #include #include using namespace std; class jz; istream &operator>>(istream &is,jz &c); ostream &operator<<(ostream &os,jz &c); class jz friend ostream &operator<<(ostream &,jz &); friend istream &operator>>(istream &,jz &); jz(int a,int b,int c,int d,int e,int f) private: int d1,d2,d3,d4,d5,d6; };ostream & operator<<(ostream &output,jz &c) ;matrix(int array[3][3]) friend matrix operator + (matrix &,matrix &); friend istream & operator >> (istream &input, matrix &);friend ostream & operator << (ostream &output, matrix &);private: int a[3][3]; };matrix operator + (matrix & m1, matrix & m2) ostream & operator << (ostream & output, matrix & m) return output; }istream & operator >> (istream & input, matrix & m) void main() 第一行是引用,是傳地址呼叫函式,在呼叫函式時會減少複製物件的開銷。這時,形參就是實參的一個引用,對形參的修改會影響到實參。第二行的傳值呼叫,所謂的傳值呼叫是指把實參複製給形參,形參和實參是兩個獨立的個體,形參是實參在記憶體上的另一個拷貝,對形參的一切修改一般不會影響到實參。如,對於第二個宣告有以下函... 最大的錯誤在於沒有理解運算子過載,如 class a 其中的運算子函式呼叫,相當於,下面的函式呼叫 物件 operator 運算子 如果單單寫 int operator rmb rmb,int i 如果c 認為這個是正確的,那麼在 rmb r r 1 10 和int a 4 a 1 1 c 怎麼能判... 1 既然是操作符過載,就必然會訪問類的私有成員變數,根據類的封裝性要求,除了友元函式外,其他任何外部操作都是違規的,所以不能用普通函式來過載操作符。2 賦值操作符的過載函式在沒有顯式定義的情況下,編譯程式會自動生成,即使類成員變數包含有指標,也會將指標的值給予複製,所以往往會造成多個例項共享一個儲存...有關c 過載運算子的問題
請問 c 中,這樣過載運算子對不對
為什麼C 過載賦值運算子必須要用成員函式而不能用普通或者友元