2016-03-08 26 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(); 
} 

Wyjście:Czy istnieje jakaś różnica między C c; i Cc = C() ;?

domyślny konstruktor

domyślny konstruktor

Pytanie:

Dla C c1; domyślny konstruktor zostanie wywołany oczywiście dla C c2 = C(); Myślałem domyślny konstruktor będzie wywoływany w celu zainicjowania tymczasowego obiektu ct, a następnie skopiować konstruktora będzie wywołanie inicjalizacji c2, Wydaje się, że jestem w błędzie. czemu?

+5

Słowa kluczowe: optymalizacja wartości zwracanej, kopiowanie. –

+3

Ponieważ kompilator jest mądrzejszy niż myślisz. –

+0

Słowa kluczowe: * inicjalizacja wartości *, * inicjalizacja kopiowania *. – juanchopanza

Odpowiedz

Powiązane problemy