C++類構造優化 - 不調用拷貝構造函數
來源:程序員人生 發布時間:2014-09-30 05:40:55 閱讀次數:3129次
假如有下面這樣一個類:
class A{
public:
A(int p, char q):x(p), c(q){ cout << "constructor called" << endl; }
A(const A& a){x = a.x; c = a.c; cout << "copy constructor called" << endl;}
~A(){cout << "destructor called" << endl;}
private:
int x;
char c;
};
A a = A(1,'a');
按照預想會先調用自定義構造函數生成臨時對象,而后調用拷貝構造函數,最后會發生兩次析構。
但是,實際上上述代碼經優化后只調用構造函數A(int,char),并不調用拷貝函數,而且只發生一次析構。
即A a = A(1,'a');與A a(1,'a');是等價的。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈