История изменений
Исправление KennyMinigun, (текущая версия) :
Насчёт:
XX *xx=new XX[10]; // compile error (1)
(1) - ошибка, ибо в случае исключения в конструкторе XX() при конструировании 5-го элемента, компилятор должен будет вызвать (сгенерить код вызова) деструктора ~XX() для предыдущих 4 успешно сконструированных объектов и не сможет этого сделать по причине приватности сего деструктора. Вероятность сего исключения невозможно понять на этапе компиляции, поэтому такое запрещено.
Что-то тут не так: я вот выбросил исключение в конструкторе 5-го обьекта, но деструктор ни разу не дёрнут.
Почему тогда XX *xx = new XX[10];
требует доступа к деструктору?
cast geekless
Исходная версия KennyMinigun, :
Насчёт:
XX *xx=new XX[10]; // compile error (1)
(1) - ошибка, ибо в случае исключения в конструкторе XX() при конструировании 5-го элемента, компилятор должен будет вызвать (сгенерить код вызова) деструктора ~XX() для предыдущих 4 успешно сконструированных объектов и не сможет этого сделать по причине приватности сего деструктора. Вероятность сего исключения невозможно понять на этапе компиляции, поэтому такое запрещено.
Что-то тут не так: я вот выбросил исключение в конструкторе 5-го обьекта, но деструктор ни разу не дёрнут.
Почему тогда XX *xx = new XX[10];
требует доступа к деструктору?
cast geekless