classe finale en c ++

class Temp
{
private:
    ~Temp() {}
    friend class Final;
};

class Final : virtual public Temp
{
public:
     void fun()
     {
         cout<<"In base";
     }
};

class Derived : public Final
{
};

void main()
{
    Derived obj;
    obj.fun();
}

Le code ci-dessus tente de réaliser le non-héritées de la classe (finale). Mais à l'aide de code ci-dessus, l'objet des dérivés peuvent être créés, pourquoi?

La fonctionnalité désirée est obtenue que si ctor privé, ma question est pourquoi il n'est pas réalisable dans le cas de dtor privé?

source d'informationauteur Learner