delete и приватный деструктор
От: Аноним  
Дата: 20.03.09 09:23
Оценка:
Имем классический синглтон:
class Singleton
{ public: 
    static Singleton * Instance(); 
   private:
    Singleton();      
    Singleton(const Singleton &sg);                
    Singleton& operator=(const Singleton &sg);     
    ~Singleton();                                 
    static Singleton * instance_;                
};
Singleton * Singleton::instance_= 0;    
Singleton * Singleton::Instance()
{   if (instance_ == 0) instance_ = new Sigleton();
    return instance_;  
};

Говорят можно применить оператор delete к указателю на объект этого класса.
Как раз в связи с этим Мейерс предлажил свою реализацию паттерна, где статический указатель переходит в статический метод.
Меня интересует почему можно применить delete к указателю на объект этого такого класса? деструктор же приватный. Я всегда счетал, что если закрыть деструктор, то объект нельзя удалить извне, только изнутри.
Re: delete и приватный деструктор
От: anonim_44ax  
Дата: 20.03.09 09:27
Оценка:
А> деструктор же приватный. Я всегда счетал, что если закрыть деструктор, то объект нельзя удалить извне, только изнутри.
Мне кажется, что здесь имеются ввиду какие-то грязные трюки вроде кастов или явного вызова free()...
Re: delete и приватный деструктор
От: LaptevVV Россия  
Дата: 20.03.09 12:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Имем классический синглтон:

А>Говорят можно применить оператор delete к указателю на объект этого класса.
А>Как раз в связи с этим Мейерс предлажил свою реализацию паттерна, где статический указатель переходит в статический метод.
А>Меня интересует почему можно применить delete к указателю на объект этого такого класса? деструктор же приватный. Я всегда счетал, что если закрыть деструктор, то объект нельзя удалить извне, только изнутри.
Это одна из проблем классического синглтона — неосторожный вызов delete.
Александреску на эту тему тоже пишет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: delete и приватный деструктор
От: Аноним  
Дата: 20.03.09 14:39
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Это одна из проблем классического синглтона — неосторожный вызов delete.

LVV>Александреску на эту тему тоже пишет
Вы хотите сказать, что можно удалить этот объект, несмотря на наличие приватного диструктора?
Почему?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.