如何定义一个不能被继承的类
来源:互联网 发布:普联软件 怎么样 编辑:程序博客网 时间:2024/05/17 06:09
方法一:将构造函数声明为私有的
如果把一个类的构造函数声明为私有的,那么这个类就不能被继承。但是这也引入了一个问题,不能在类外定义这个类的对象,所以我们还需要在类内定义一个静态的成员函数来返回创建的这个对象。
class AA { public: static AA GetObject(int a) { return AA(); //静态建立类的对象 } protected: AA() {} };
方法二:我们可以声明一个辅助的类A,把类A这个类的构造函数声明为私有的,并使得B是A的友元类,且B虚继承A。这样的话别的类就
不能继承B了。
假设现在有一个类D继承B,在D初始化的时候会先调用B类的构造函数,但是由于B虚继承A,所以为了防止产生二义性,D必
须先调用A的构造函数,由于A的构造函数是私有的不可访问,所以会产生错误,继承会失败。
class B; //设计一个不能被继承的类 class A { friend B; //声明为友元private: A() {} }; class B :virtual public A { public: B(int b) { _b = b; } private: int _b; }; //注意,这里是肯定不会继承B的class D:public B { public: D(int b,int d) //A的构造函数不可访问,产生错误 :B(b) , _d(d) {} private: int _d; };
阅读全文
0 0
- 如何定义一个不能被继承的类
- 如何定义一个不能被继承的类
- 定义一个不能被继承的类
- C++中定义一个不能被继承的类
- C++中如何定义不能被继承的类
- C++定义不能被继承的类
- C++定义不能被继承的类
- 如何创建一个不能被继承的类
- c++如何生成一个不能被继承的类
- c++中如何实现一个不能被继承的类
- 如何让一个类不能被继承
- 定义一个只能在堆上生成对象的类&&定义一个只能在栈上生成对象的类&&定义一个类不能被继承
- 设计一个不能被继承的类
- 设计一个不能被继承的类
- 设计一个不能被继承的类
- 设计一个不能被继承的类
- 设计一个不能被继承的类
- 设计一个不能被继承的类
- Listview多条目加载
- 是否为变位词
- jquery获取html元素位置
- qt执行cmd命令
- leetcode.566.Reshape the Matrix
- 如何定义一个不能被继承的类
- centos7中keepalived配置
- FreeSWITCH 视频会议常用命令
- TensorFlow 队列与多线程
- python 多进程共享数据的读与写
- vijos1143
- Android Binder 作为 IPC 机制原理和面试回答
- HTML 基础2
- 智能家居是真蓝海还是伪需求?