#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();
}
uscita:C'è qualche differenza tra C c; e C c = C() ;?
costruttore di default
costruttore di default
Domanda:
Per C c1;
predefinita costruttore sarà chiamato, ovviamente, per C c2 = C();
ho pensato costruttore di default sarà chiamato per inizializzare un oggetto temporaneo ct, quindi il costruttore della copia sarà chiamato per inizializzare c2, sembra che io abbia torto. perché?
Parole chiave: ottimizzazione del valore di ritorno, copia elisione. –
Perché il compilatore è più intelligente di quanto si pensi. –
Parole chiave: * inizializzazione valore *, * inizializzazione copia *. – juanchopanza