1 //实现运算符重载 2 #include<iostream> 3 #include<cstdio> 4 using namespace std; 5 namespace gong 6 { 7 const int maxn=2; 8 } 9 namespace Var 10 { 11 int i,j; 12 } 13 class Matrix 14 { 15 public : 16 Matrix(){}; 17 ~Matrix(){}; 18 int array[gong::maxn][gong::maxn]; 19 Matrix operator + (const Matrix & aa) const ; //实现函数a+b重载,类外定义 20 Matrix operator - (const Matrix &aa ) const //实现函数a-b重载 21 { 22 Matrix dd; 23 using namespace gong ; 24 using Var::i; 25 using Var::j; 26 for( i=0;i<maxn;i++) 27 { 28 for( j=0;j<maxn;j++) 29 { 30 dd.array[i][j]=array[i][j]-aa.array[i][j]; 31 } 32 } 33 return dd; 34 } 35 /*注意《《,》》这样的运算符不能定义为类重载函数 36 虽然不能“重载”为成员函数,但是可以定义为新的成员函数,只不过使用习惯和常例不符而已。 37 */ 38 ostream operator<< (ostream &out) const 39 { 40 using namespace gong ; 41 using namespace Var; 42 for(i=0;i<maxn ;i++) 43 { 44 for(j=0;j<maxn;j++) 45 { 46 out<<array[i][j]<<ends; 47 } 48 out<<endl; 49 } 50 return out ; 51 } 52 }; 53 Matrix Matrix::operator +(const Matrix & aa) const 54 { 55 Matrix dd; 56 using namespace gong ; 57 using namespace Var ; 58 for( i=0;i<maxn;i++) 59 { 60 for( j=0;j<maxn;j++) 61 { 62 dd.array[i][j]=array[i][j]+aa.array[i][j]; 63 } 64 } 65 return dd; 66 } 67 int main() 68 { 69 Matrix a,b,c; 70 using gong::maxn; 71 using namespace Var; 72 for(i=0;i<maxn;i++) 73 { 74 for(j=0;j<maxn;j++) 75 { 76 scanf("%d%d",&a.array[i][j],&b.array[i][j]); 77 } 78 } 79 c=a+b; 80 // cout<<c<<endl; 81 c<<cout; 82 c=a-b; 83 c<<cout ; 84 return 0; 85 }
不妨设 a[2][2]= b[2][2]=
{ 1, 2 { 1, 2
3 ,4} 3 ,4}
在vc上运算的结果为: