我有一个class A
,我需要一个A class B: public A
的子类。我怎样才能实现我可以继承这个类,但是没有其他人可以再从这两个类继承?
如果我使class A
最终B不能从A继承。
答案 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
的重点。