只能从类继承一次

Only inherit one time from a class

本文关键字:一次 继承      更新时间:2023-10-16

我有一个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这样的类实例化。

相关文章: