Скопировать конструктор elision? [Дубликат]
Возможный дубликат:
Почему деструктор был вызван только один раз?
Учитывая код ниже, я не понимаю вывод в gcc. Я ожидаю, что два объекта будут созданы и уничтожены, но вместо этого я вижу только один вызов конструктора и деструктора. Что тут происходит?
#include <string>
#include <iostream>
struct Huge{
Huge() { std::cout << "Constructor" << std::endl; }
Huge(Huge const &r) { std::cout << "Copy Constructor" << std::endl; }
~Huge() { std::cout << "Destructor" << std::endl; }
};
Huge g() {
std::cout << "Entering g" << std::endl;
Huge temp;
std::cout << "Exiting g" << std::endl;
return temp;
}
int main(){
Huge h2(g());
std::cout << "Before leaving main" << std::endl;
}
Вывод этого кода в g ++ (4.4)
Ввод г
Конструктор
Выход г
Перед выходом из основного
Destructor