1. 程式人生 > >賦值函數(運算符重載)(2)

賦值函數(運算符重載)(2)

判斷語句 using void 判斷 ostream his sin bject std

&1.參數使用引用是為了增加效率,因為如果不是引用,參數為對象則會調用拷貝構造函數
2.函數具有返回值是為了,若有連等賦值,保證其正常賦值
3.判斷語句是為了保證不會出現自己給自己賦值的情況
4.返回值為引用是為了提升效率
賦值函數表面看起來只是對象賦值給對象,實際上是=號前的對象調用operator=方法,賦值函數的參數即為
=號後的對象

void main()
{
    ST t(10,20);
    ST t1;
    t1 = t;    //這裏原理應該是 t1.operator=(&t)
}

  

//Test1.h
#include<iostream>
using namespace std;
class ST
{
private:
	int a;
	double b;
public:
	ST(int a=0,double b=0):a(a),b(b)
	{
		this->a = a;
		this->b = b;
		cout<<"Object was built. "<<this<<endl;
	}
	ST(const ST &t);//拷貝構造
	ST& operator=(const ST &t);
	~ST()
	{
		cout<<"Object was free. "<<this<<endl;
	}
};

ST::ST(const ST &t)
{
	this->a = t.a;
	this->b = t.b;
	cout<<"Object was copy. "<<this<<endl;
}
//在類外實現方法時:	返回值 類名 ::函數名(參數)
ST& ST::operator=(const ST &t)
{
	if(this != &t)
	{
		this->a = t.a;
		this->b = t.b;
	}
	return *this;
}

  

#include<iostream>
#include"Test1.h"
using namespace std;
void main()
{
	ST t(10,20);
	ST t1;
	t1 = t;
}

  運行結果

技術分享圖片

賦值函數(運算符重載)(2)