/**
*cppTest-7.4:对象赋值与重载赋值运算符=
*
*需要说明的是,关于赋值运算符重载的函数定义并不是必须的。
*此外,在C++中,程序员不能定义新的运算符,被重载的运算符保持原有的优先级和结合性,而不论运算符重载函数内代码是什么样的形式。
*对于赋值操作,必须返回表达式的值,也即等式右边的值,只有这样,才能使连续赋值如c=b=a合法。程序中是通过返回由this指向的对象来实现的。
*author 炜sama
*/
#include<iostream.h>
class three_d{
int x,y,z;
public:
three_d(int x1=0,int y1=0,int z1=0){ x=x1; y=y1; z=z1;}
//如果进行对象的赋值运算的话(比如c=c2),则此时系统将自动调用缺省的类似于下面的赋值运算符重载函数:
three_d operator=(three_d &t)
{
x=t.x; y=t.y; z=t.z;
return *this;//@@this为指针,而complex不是指针,所以要取指针内容然后返回:*this!!
}
void show(){ cout<<"("<<x<<","<<y<<","<<z<<")"<<endl;}
friend three_d operator+(three_d &d1,three_d &d2);
};
three_d operator+(three_d &d1,three_d &d2)
{
int x1,y1,z1;
x1=d1.x+d2.x;
y1=d1.y+d2.y;
z1=d1.z+d2.z;
return three_d(x1,y1,z1);
}
void main()
{
three_d a(1,2,3),b(10,10,10);
three_d c;
a.show(); b.show();
c=a+b; c.show();
c=a+b+c; c.show();
c=b=a; c.show(); b.show();
}
cppTest-7.4:对象赋值与重载赋值运算符=
最新推荐文章于 2024-04-26 11:33:08 发布