cppTest-7.4:對象賦值與重載賦值運算符=

/**
 *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();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章