运算符重载
l 运算符重载: C++能将运算符( + 、 - 、* 、 / 等)的定义扩展到运算分量是对象的情况,并且重载后运算符的运算顺序和优先级不变,这样使得C++ 代码更直观,更易读。
l 示例
Class A
{
……
} ;
A a,b,c,d;
d=a+b*d
l 双目运算符重载
非成员形式重载 ( 红色 ) 及成员形式重载 ( 金色 )
class A
{
public:
A(int s){a=s;}
friend A operator +( A &x , A & y); // 两个形参对象
A operator –(A &y) // 一个形参对象
{
int t=a-y.a;
A r(t);
return r ;
}
private:
int a;
};
A operator +( A &x , A & y)
{
int m= x.a+y.a;
A n(m);
return n;
}
l 单目运算符(增量运算符)重载
前增量重载( 红色 )、后增量重载( 橙色 )
class A
{
public:
A(int s){a=s;}
A &operator ++ ()
{
a++;
return *this;
}
A operator ++ (int)
{
A temp(*this);
a++;
return temp;
}
private:
int a;
};
l 赋值运算符重载
A & operator = ( A &s)
{
a=s.a;
return *this;
}
l 本课题目
编写一个复数类 Complex 和一个整数类 Increase ,其中复数类基本属性是实部和虚部,整数类的基本属性是数值大小,自己构建成员函数让程序完成以下主函数的各执行语句。
void main()
{
Complex a(3,2),b(2,3),c;
c=a+b; //’+’ 运算符重载, 成员函数形式实现
c.print(); // 输出复数ai+b
c=a-b; //’ - ’ 运算符重载, 非成员函数形式实现
c.print();
Increase d(100);
((++d)++)++.print(); // 前增量、后增量运算符重载, 成员函数形式实现
d .print(); // 输出整数大小
}