只能从类继承一次
Only inherit one time from a class
我有一个class A
,我需要一个class B: public A
的子类。我如何才能实现我可以从这个类继承,但没有其他人可以从这两个类再次继承?如果我使class A
成为最终的B,则不能从A继承。
在C++中没有办法说只有一个类可以从另一个类继承。类要么是final
(因此不可继承),要么不是。
你能做的最好的事情就是让A
将其构造函数声明为private,并使B
成为A
的朋友。但这将使其他用户难以创建A
类型的对象。
正如我所评论的:我不清楚你想要什么。您希望B
能够从A
继承,但没有新的类能够从任何一个继承?根据这个假设,你最好的选择是让A
的ctor成为私有的和朋友B
,同时让B
成为最终的。
我不知道你在追求什么,从设计角度来说,但这是一个糟糕的设计。然而,它确实回答了你的问题。
只是一个想法(尽管我认为这实际上不是一个好的设计):
class B;
class A {
// everything's private
friend class B; // << except for class B
};
class B final // << final prevents from further inheritance
: A {
public:
// What you want to publish ...
};
尽管如前所述,我认为class A
没有多大意义,除非您希望有更多像class B
这样的类实例化。
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 什么是仅调用一次并调用参数的控制台应用
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 为什么我的信号处理程序只执行一次?
- C++ - 有没有办法只继承一次某些函数,而其他函数在多次继承中多次继承?
- 多重继承,如何只打印一次共同祖先的一部分
- 在继承层次结构中将方法定义为虚拟方法一次,以使多态性发挥作用
- 只能从类继承一次