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(); 
} 

Выход:Есть ли разница между C c; и C c = C();

конструктор по умолчанию

конструктор по умолчанию

Вопрос:

Для C c1; по умолчанию конструктор будет вызван, очевидно, для C c2 = C(); я думал, конструктор по умолчанию будет для инициализации временного объекта ct, то конструктор копирования будет вызван для инициализации c2. Кажется, что я ошибаюсь. Зачем?

+5

Ключевые слова: оптимизация возвращаемого значения, копирование эликсира. –

+3

Потому что компилятор умнее, чем вы думаете. –

+0

Ключевые слова: * значение инициализация *, * копирование инициализация *. – juanchopanza

ответ

Смежные вопросы