6
#include<iostream>
using namespace std;
class C{
private:
int value;
public:
C(){
value = 0;
cout<<"default constructor"<<endl;
}
C(const C& c){
value = c.value;
cout<<"copy constructor"<<endl;
}
};
int main(){
C c1;
C c2 = C();
}
默認構造函數
默認構造函數
問題:
對於C c1;
默認的構造函數將明顯調用,用於C c2 = C();
我覺得默認的構造函數會呼籲初始化一個臨時對象ct,那麼複製構造函數會調用初始化c2,看來我錯了。爲什麼?
關鍵詞:返回值優化,複製elision。 –
因爲編譯器比你想象的更聰明。 –
關鍵字:*值初始化*,*複製初始化*。 – juanchopanza