2016-03-08 56 views
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 c有沒有區別;和C c = C();?

默認構造函數

默認構造函數

問題

對於C c1;默認的構造函數將明顯調用,用於C c2 = C();我覺得默認的構造函數會呼籲初始化一個臨時對象ct,那麼複製構造函數會調用初始化c2,看來我錯了。爲什麼?

+5

關鍵詞:返回值優化,複製elision。 –

+3

因爲編譯器比你想象的更聰明。 –

+0

關鍵字:*值初始化*,*複製初始化*。 – juanchopanza

回答

相關問題