Re[7]: default constructor
От: Павел Кузнецов  
Дата: 20.05.04 20:48
Оценка: 17 (1)
> L_L>Так плевать на интел. У VC то как? Смотри, кстати, 8.5.3 / 5 , стр. 148, то место, где 93)
>
> Я собственно не веню компилятор в том что он вызывает 2 раза деструктор, а не один, проблема то в другом. Почему от того, есть ли конструктор или нет, зависит его поведение, и потом так сильно. Малоли что я могу делать в своей программе в этом деструкторе, а потом добавлю конструктор и ее поведение поменяется коренным образом. Как то это не правельно.

Естественно, неправильно. Т.е. неправильно, то что поведение твоей программы так радикально меняется от лишнего копирования. Стандарт явно разрешает компилятору как вводить неявные копии объектов (см. ссылки выше), так и оптимизировать "лишние" вызовы конструкторов копирования вне зависимости от наличия побочных эффектов в конструкторе копирования и деструкторе:

12.8/15 When certain criteria are met, an implementation is allowed to omit the copy construction of a class object, even if the copy constructor and/or destructor for the object have side effects.

Posted via RSDN NNTP Server 1.9 alpha
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.