c++中类的继承方式

在C++中,类的继承主要有三种方式:公有继承(public inheritance)、保护继承(protected inheritance)和私有继承(private inheritance)。这些继承方式决定了基类成员在派生类中的访问权限。

公有继承(Public Inheritance)

当使用公有继承时,基类的公有(public)和保护(protected)成员在派生类中保持原有的访问权限。也就是说,基类的公有成员在派生类中仍然是公有的,保护成员在派生类中仍然是保护的。但基类的私有(private)成员在派生类中是不可访问的。

class Base {
public:
void PublicFunction() { /* ... */ }
protected:
void ProtectedFunction() { /* ... */ }
private:
void PrivateFunction() { /* ... */ }
};
class Derived : public Base {
public:
void AnotherFunction() {
PublicFunction(); // 可以调用,因为是公有的
ProtectedFunction(); // 可以调用,因为在派生类中保护成员仍然是可访问的
// PrivateFunction(); // 错误!不可访问,因为是私有的
}
};

保护继承(Protected Inheritance)

当使用保护继承时,基类的公有和保护成员在派生类中都将变成保护的。这意味着这些成员在派生类内部是可访问的,但在派生类外部是不可访问的。基类的私有成员在派生类中仍然是不可访问的。

class Derived : protected Base {
public:
void AnotherFunction() {
PublicFunction(); // 可以调用,因为在派生类中公有成员变成了保护的
ProtectedFunction(); // 可以调用,因为本来就是保护的
// PrivateFunction(); // 错误!不可访问,因为是私有的
}
};
// 在派生类外部
Derived d;
// d.PublicFunction(); // 错误!不可访问,因为在派生类外部它变成了保护的

私有继承(Private Inheritance)

当使用私有继承时,基类的所有成员(公有、保护和私有)在派生类中都将变成私有的。这意味着这些成员只能在派生类内部被访问,派生类外部无法访问它们。

class Derived : private Base {
public:
void AnotherFunction() {
PublicFunction(); // 可以调用,因为在派生类中公有成员变成了私有的
ProtectedFunction(); // 可以调用,因为在派生类中保护成员变成了私有的
// PrivateFunction(); // 错误!不可访问,因为是私有的
}
};
// 在派生类外部
Derived d;
// d.PublicFunction(); // 错误!不可访问,因为在派生类外部它变成了私有的

继承方式的选择

选择哪种继承方式取决于你希望基类成员在派生类中的可见性和可访问性如何。公有继承是最常见的选择,它保留了基类中公有成员的访问级别。保护继承通常用于当你想让基类的一部分成员在派生类内部可见,但在派生类外部不可见时。私有继承则用于完全隐藏基类的实现细节,只让派生类内部能够使用这些成员。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值