C++的三种继承方式

public继承

在公有继承(public inheritance)中,派生类继承了基类的公有成员和受保护成员,同时保持它们的原有访问权限。私有成员仍然对于派生类不可见。所以,如果你在派生类中使用了公有继承,那么基类的 privateVar 依然对派生类不可见,而 publicVarprotectedVar 会在派生类中保持其原有的访问权限。

以下是一个示例:

class BaseClass {
public:
    int publicVar;
private:
    int privateVar;
protected:
    int protectedVar;
};

class DerivedClass : public BaseClass {
    // publicVar 在此处依然是派生类的公有成员
    // privateVar 对于派生类依然是不可见
    // protectedVar 依然是派生类的受保护成员
};

在上述示例中,DerivedClass 通过公有继承继承了 BaseClasspublicVarprotectedVar,但无法访问 privateVar,因为它是私有的。

总结一下,公有继承保持了基类成员的访问权限,只有私有成员会对于派生类不可见。

privated继承

在私有继承(private inheritance)中,派生类会继承基类的成员,但所有继承的成员都会变为派生类的私有成员,不论它们在基类中的原始访问权限如何。这意味着在私有继承中,基类的公有成员、受保护成员和私有成员都会在派生类中变成私有成员,对外部代码都不可见。(更正,私有成员在派生类中仍然是不可见的)

以下是一个示例:

class BaseClass {
public:
    int publicVar;
private:
    int privateVar;
protected:
    int protectedVar;
};

class DerivedClass : private BaseClass {
    // publicVar, privateVar, protectedVar 在此处都变成了派生类的私有成员
    // 更正,privateVar不能被访问
};

protected继承

在受保护继承(protected inheritance)中,派生类继承了基类的公有成员和受保护成员,但所有继承的成员都会变为派生类的受保护成员,无法被外部代码访问。私有成员仍然对于派生类不可见。(派生类及其派生类的子类可以访问这些成员)

class BaseClass {
public:
    int publicVar;
private:
    int privateVar;
protected:
    int protectedVar;
};

class DerivedClass : protected BaseClass {
    // publicVar, privateVar, protectedVar 在此处都变成了派生类的受保护成员
    // privateVar不能被访问
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值