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

Ausgang:Gibt es einen Unterschied zwischen C c; und Cc = C();

Standardkonstruktors

Standardkonstruktors

Frage:

Für C c1; Standardkonstruktors wird natürlich genannt werden, denn C c2 = C(); ich Standardkonstruktors gedacht wird aufgerufen, um ein temporäres Objekt zu initialisieren ct, dann kopieren Konstruktor wird Aufruf c2 initialisieren, Es scheint, dass ich falsch liege. Warum?

+5

Schlüsselwörter: Rückgabewert Optimierung, Kopie Elision. –

+3

Da Compiler ist schlauer als Sie denken. –

+0

Schlüsselwörter: * Wert Initialisierung *, * Kopie Initialisierung *. – juanchopanza

Antwort

Verwandte Themen