條款10: 令operator= 返回一個reference to *this;
關於賦值,我們可以這樣寫:
int x,y,x;
x =y = z;
這就是所謂的連續賦值
為了實現“連鎖賦值”賦值操作符必須返回一個reference指向操作符的左側實參。這是我們為class實現賦值操作符時應該遵循的協議:
#includeusing namespace std; class Widget { public: Widget() { cout<<"調用無參構造函數"<
上面說賦值操作符必須返回一個reference,我以前也是認為如果要連續操作,就必須返回引用,但是我用返回一個對象試著運行了一下,程序也會通過,並且在這個operator= 中還能得到一模一樣的效果:
經過研究發現,並非一定要返回引用,返回值對象時會增加拷貝構造函數和析構函數的調用,所以一般都是返回引用;
#includeusing namespace std; class Widget { public: Widget() { cout<<"調用無參構造函數"<