●●● ●●●●● 重载为类的成员函数 ●●●● ●●● ● 格式如下: 关键字 运算的对象 <类名> operator<运算符>(<参数表> 函数体} 返回类型函数名运算的对象 A opeator+(A&);/重载了类A的“+运 算符 其中: operator是定义运算符重载函数的关键字,它与 其后的运算符一起构成函数名
重载为类的成员函数 11 格式如下: <类名> operator<运算符>(<参数表>) { 函数体 } A opeator + (A &); //重载了类A的“+”运 算符 其中:operator是定义运算符重载函数的关键字,它与 其后的运算符一起构成函数名。 返回类型 运算的对象 关键字 函数名 运算的对象
class a 没有重载运算符的例子 Int 1 public: A(int a=0)i=a void Show(void) cout<<1=<j<<endl void adda(A&a,A&b)用函数进行类之间的运算 i=a. i+b i 利用函数完成了加法运算 void main( void) {Aal(10),a2(20),a3 al Show o a2 Show o a3=al+a2 /不可直接运算 a3. AddA(al, a2) 调用专门的功能函数 a3 Show o 用和作对象调用函数
12 class A { int i; public:A(int a=0) { i=a; } void Show(void){ cout<<"i="<<i<<endl; } void AddA(A &a, A &b) //利用函数进行类之间的运算 { i=a.i+b.i; } }; void main(void) { A a1(10),a2(20),a3; a1.Show (); a2.Show (); // a3=a1+a2; //不可直接运算 a3.AddA(a1,a2); //调用专门的功能函数 a3.Show (); } 没有重载运算符的例子 利用函数完成了加法运算 用和作对象调用函数
class a int 运用重载运算符的例子 public: A(int a=0)( i=a;) void Show(void) cout<<1=<<K<<endl void dda(A&a,A&b)//利用函数进行类之间的运算 t i=a. 1+b. 1; A operator+(A&a)/重载运算符+ A t, t i=this->1+a 1; return t void main( void) Aa1(10),a2(20)a3; alShow O「相当于a3= al operator++a2) a2 Show( a3=a1+a2;//重新解释了加法,可以直接进行类的运算 a3. AddA(al, a2) //调用专门的功能函数 a3. Show
13 class A { int i; public:A(int a=0){ i=a; } void Show(void){ cout<<"i="<<i<<endl; } void AddA(A &a, A &b) //利用函数进行类之间的运算 { i=a.i+b.i; } A operator +(A &a) //重载运算符+ { A t; t.i=this->i+a.i; return t; } }; void main(void) { A a1(10),a2(20),a3; a1.Show (); a2.Show (); a3=a1+a2; //重新解释了加法,可以直接进行类的运算 a3.AddA(a1,a2); //调用专门的功能函数 a3.Show (); } 运用重载运算符的例子 相当于a3=a1.operator+(a2)
●●● ●●●●● 重载运算符与一般函数的比较: ●●●● ●●● ● 相同:1)均为类的成员函数;2)实现同一功能 返回值函数名形参列表 返回值函数名 void Adda(a &a, a&b) A operator +(a &a) ia.i+b. 1; A 形参 函数调用: ti=this→>i+ai return t a3 AddA(al, a2) 函数调用:由对象a 由对象a3调用 a3=al+a2 调用 a3=al operator+(a2)
重载运算符与一般函数的比较: 14 相同:1)均为类的成员函数;2)实现同一功能 void AddA(A &a, A &b) { i=a.i+b.i; } A operator +(A &a) { A t; t.i=this->i+a.i; return t; } a3=a1+a2; a3.AddA(a1,a2); 返回值 函数名 形参列表 由对象a3调用 函数调用: 返回值 函数名 形参 函数调用: a3=a1.operator+(a2); 由对象a1 调用