不能被继承的类

来源:互联网 发布:如何用mac格式化u盘 编辑:程序博客网 时间:2024/05/16 08:08
/**********************************************************************题目:用C++设计一个不能被继承的类**********************************************************************/#include <stdio.h>// ====================方法一====================//常规的方法:把构造函数设为私有函数class SealedClass1{public:    static SealedClass1* GetInstance()     {        return new SealedClass1();    }     static void DeleteInstance( SealedClass1* pInstance)    {        delete pInstance;    } private:    SealedClass1() {}    ~SealedClass1() {}};// 如果试图从SealedClass1继承出新的类型,// 将会导致编译错误。/*class Try1 : public SealedClass1{public:    Try1() {}    ~Try1() {}};*/// ====================方法二====================//利用虚拟继承template <typename T> class MakeSealed{    friend T; private:    MakeSealed() {}    ~MakeSealed() {}}; class SealedClass2 : virtual public MakeSealed<SealedClass2>{public:    SealedClass2() {}    ~SealedClass2() {}};// 如果试图从SealedClass1继承出新的类型,// 将会导致编译错误。/*class Try2 : public SealedClass2{public:    Try2() {}    ~Try2() {}};*/int main(){    return 0;}
==参考剑指offer
0 0
原创粉丝点击