zoukankan      html  css  js  c++  java
  • C++实现不可被继承的类

      方法1:将构造函数修饰成私有时,该类不能被继承。你也许可能会问,构造函数声明成私有,在外面使用时就不能创建对象了,不能创建对象的类还有意义吗?答案是有意义,单例模式就是将类的构造函数声明成私有的。

    #include <iostream>
    
    using namespace std;
    
    class A {
    private:
        A() {}
    };
    
    class B : public A {
    
    };
    
    int main()
    {
        B a;
        return 0;
    }

    编译直接报错:说明构造函数私有,就不能被继承了。

      方法2:C++11引入了final关键字,被final修饰的类不能被继承,被final修饰的的方法不可被重写。

    // final修饰的类不能被继承
    #include <iostream> using namespace std; class A final { public: A() {} }; class B : public A { }; int main() { B a; return 0; }

    编译直接报错:

    // final修饰的函数不可被重写
    #include <iostream> using namespace std; class A { public: A() {} virtual void func() final {} }; class B : public A { public: virtual void func() override {} }; int main() { B a; return 0; }

    编译直接报错:

    https://i.cnblogs.com/posts?categoryid=0
  • 相关阅读:
    基础编程练习题第一波
    TYVJ 1541 八数码
    NOIP 2014 寻找道路
    NOIP2014 解方程
    POJ 3213 矩阵乘法(优化)
    POJ 1523 Tarjan求割点
    POJ 3237 树链剖分+线段树
    SPOJ 375 树链剖分
    NOIP 2012 T2 国王游戏 (贪心+高精)
    POJ 1364 差分约束
  • 原文地址:https://www.cnblogs.com/418ks/p/14716286.html
Copyright © 2011-2022 走看看