Частный деструктор

Почему я могу создать объект класса с частным деструктором в свободном хранилище, но не в стеке?

Например, это недопустимо:

class Foo
{
public:
   explicit Foo( int );
   static void delete_foo(Foo* foo ) { delete foo; }
private:
   int x;
   ~Foo();
   Foo( const Foo& );
   Foo& operator=(const Foo& );
};

int main()
{
   Foo * fooptr = new Foo(5); // legal
   Foo::delete_foo( fooptr ); // legal 
   Foo foo(5); // illegal
}
14
задан CashCow 7 February 2011 в 12:36
поделиться