zoukankan      html  css  js  c++  java
  • 【面试题048】不能继承的类

    【面试题048】不能继承的类
    题目:
        用C++定义一个不可以被继承的类。
     
    思路一:
        把构造函数设为私有的函数。
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <iostream>

    using namespace std;

    class SealedClass1
    {
    public:
        static SealedClass1 *GetInstance()
        {
            return new SealedClass1();
        }
        static void DeleteInstance(SealedClass1 *pInstance)
        {
            delete pInstance;
        }
    private:
        SealedClass1() {}
        ~SealedClass1() {}
    };


    class Try1 : public SealedClass1
    {
    public:
        Try1() {}
        ~Try1() {}
    };

    int main()
    {
        return 0;
    }
    思路二:
        利用虚继承。
    实现一个与一般的类型相比除了不能被继承之外其他用法都一样的类型。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <iostream>

    using namespace std;

    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;
    }
     
  • 相关阅读:
    Windbg学习 (0x0002) 命令基础
    Windbg学习 (0x0001) 安装与基本配置
    python 20day--装饰器详解
    python 19day--生成器详解
    python 18day--迭代器详解
    python 17day--内置函数
    python 16day--函数作用域与函数式编程
    python 15day--递归函数与匿名函数
    python 14day--函数
    python 13day--集合、字符串格式化
  • 原文地址:https://www.cnblogs.com/codemylife/p/3771745.html
Copyright © 2011-2022 走看看