Perché è possibile creare un oggetto di una classe con distruttore privato nel negozio gratuito ma non nello stack?Distruttore privato
Per esempio, questo è illegale:
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
}
Potrebbe fornire un esempio di codice breve per l'illustrazione? – sharptooth
Posso farlo per voi – CashCow