LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Насчёт:

XX *xx=new XX[10];   // compile error (1)

(1) - ошибка, ибо в случае исключения в конструкторе XX() при конструировании 5-го элемента, компилятор должен будет вызвать (сгенерить код вызова) деструктора ~XX() для предыдущих 4 успешно сконструированных объектов и не сможет этого сделать по причине приватности сего деструктора. Вероятность сего исключения невозможно понять на этапе компиляции, поэтому такое запрещено.

Что-то тут не так: я вот выбросил исключение в конструкторе 5-го обьекта, но деструктор ни разу не дёрнут.

http://ideone.com/QW7n4p

Почему тогда XX *xx = new XX[10]; требует доступа к деструктору?

cast geekless

Исходная версия KennyMinigun, :

Насчёт:

XX *xx=new XX[10];   // compile error (1)

(1) - ошибка, ибо в случае исключения в конструкторе XX() при конструировании 5-го элемента, компилятор должен будет вызвать (сгенерить код вызова) деструктора ~XX() для предыдущих 4 успешно сконструированных объектов и не сможет этого сделать по причине приватности сего деструктора. Вероятность сего исключения невозможно понять на этапе компиляции, поэтому такое запрещено.

Что-то тут не так: я вот выбросил исключение в конструкторе 5-го обьекта, но деструктор ни разу не дёрнут.

http://ideone.com/NOs5eM

Почему тогда XX *xx = new XX[10]; требует доступа к деструктору?

cast geekless