Как возможно, что разрешено удалять объект с помощью частного деструктора в следующем коде? Я уменьшил реальную программу до следующего образца, но он все еще компилируется и работает.Удаление объекта с помощью частного деструктора
class SomeClass;
int main(int argc, char *argv[])
{
SomeClass* boo = 0; // in real program it will be valid pointer
delete boo; // how it can work?
return -1;
}
class SomeClass
{
private:
~SomeClass() {}; // ! private destructor !
};
Interesting..if Я двигаюсь определение класса выше основной(), то он выдает ошибку компиляции. В противном случае я просто получаю предупреждение C4150: удаление указателя на неполный тип «SomeClass»; нет деструктора, называемого « – Naveen
@Naveen: Ожидается. Неполный тип - одна проблема. Частный деструктор - другой. Каждый из них имеет собственное диагностическое сообщение. Вы переключаетесь между ними, перемещая определение 'SomeClass'. – AnT