賦值函數(運算符重載)(2)
阿新 • • 發佈:2019-01-27
判斷語句 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)