#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?
Słowa kluczowe: optymalizacja wartości zwracanej, kopiowanie. –
Ponieważ kompilator jest mądrzejszy niż myślisz. –
Słowa kluczowe: * inicjalizacja wartości *, * inicjalizacja kopiowania *. – juanchopanza