只从类中继承一次

时间:2016-04-08 16:52:57

标签: c++ c++11 inheritance

我有一个class A,我需要一个A class B: public A的子类。我怎样才能实现我可以继承这个类,但是没有其他人可以再从这两个类继承? 如果我使class A最终B不能从A继承。

3 个答案:

答案 0 :(得分:5)

C ++中没有办法说只有一个类可以从另一个类继承。一个类是final(因此不可行)或者它不是。

您可以做的绝对最好的事情是A将其构造函数声明为私有,并使B成为A的朋友。但这会使其他用户难以创建A类型的对象。

答案 1 :(得分:2)

正如我评论的那样:我不清楚你想要什么。您希望B能够从A继承,但是没有新的类可以继承任何一个?根据这个假设,最好的办法是让A ctor私密和朋友B,同时让B成为最终。{/ p>

我不知道你所追求的是什么,设计明智,但这是糟糕的设计。但是,它确实回答了你的问题。

答案 2 :(得分:2)

只是一个想法(虽然我不认为这实际上是一个好的设计):

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的重点。