/**
*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:對象賦值與重載賦值運算符=
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.