#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. Кажется, что я ошибаюсь. Зачем?
Ключевые слова: оптимизация возвращаемого значения, копирование эликсира. –
Потому что компилятор умнее, чем вы думаете. –
Ключевые слова: * значение инициализация *, * копирование инициализация *. – juanchopanza