不能被继承的类

来源:互联网 发布:无线网卡隐藏mac地址 编辑:程序博客网 时间:2024/06/05 02:37
题目:用C++设计一个不能被继承的类。

分析:
一个类被继承后,在生成派生类对象时,派生类会主动调用父类的构造函数,所以如果父类的构造函数被设置成私有时,派生类的对象就无法构建。

一、直接将构造函数设为私有函数

class SealedClass{public:    static SealedClass* GetInstance()    {        return new SealedClass();    }    static void DeleteInstance( SealedClass* pInstance )    {        delete pInstance;    }private:    SealedClass() {}    ~SealedClass() {}};class test : public SealedClass{};int main( void ){//    test t;        return 0;}

2.虚拟继承

template <typename T>class MakeSealed{    friend T;private:    MakeSealed() {}    ~MakeSealed() {}};class SealedClass2 : virtual public MakeSealed<SealedClass2>{public:    SealedClass2() {}    ~SealedClass2() {}};class Try : public SealedClass2{};
原创粉丝点击