限制继承

Restricting inheritance

本文关键字:继承      更新时间:2023-10-16
类 BaseA{}; , 类 DerivedB{};

类 DerivedC{};

DerivedB 可以从 BaseA 派生:想要允许:类 DerivedB:公共 BaseA

但是,如果有人试图做 衍生C:公共 BaseA ==>想要限制这一点。

可能吗?

你可以将所有BaseA的构造函数设为私有,并将DerivedB添加为BaseAfriend

class BaseA
{
    friend class DerivedB;
private:
    BaseA();
};
class DerivedB : BaseA
{
};
class DerivedC : BaseA  //error - I get it when I try to create an object in MSVS
                        //but in principle it works
{
};