Ссылка константы на временный файл

Это тривиальный вопрос

Может ли кто-нибудь объяснить причину трех деструкторов?

при вызове

[110 ]

вызывается ваша функция, которая создает объект типа Entity, который в свою очередь вызывает конструктор. Здесь вы получите одно дополнительное сообщение конструктора

Замените ваш Entity(int t) contructor by this

 Entity(int t)
   :a(t)
  {
    std::cout << "Constructor created with integer "<< a << std::endl;
  }

Вы увидите, какие конструкторы были вызваны при запуске кода.

9
задан Drealmer 17 April 2009 в 14:12
поделиться

1 ответ

Это зависит от реализации IS.

Стандарт разрешает копирование при привязке временного к константной ссылке. В вашем случае VC ++ выполняет копирование только тогда, когда конструктор неявно определен. Это неожиданно, но разрешено.

C ++ 1x исправит это .

24
ответ дан 4 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: