类和对象-继承-继承方式

继承方式

在C++中,有三种主要的继承方式:公有继承(public inheritance)、私有继承(private inheritance)、保护继承(protected inheritance)。每种继承方式都有其特定的访问权限规则和使用场景。

1. 公有继承(public inheritance)

  • 知识点:

  • 派生类继承基类的公有成员和保护成员,但不继承基类的私有成员。

  • 公有继承关系中,基类的公有成员和保护成员在派生类中的访问权限保持不变,即公有成员在派生类中仍然是公有的,保护成员在派生类中仍然是保护的。

  • 用于实现"is-a"关系,即派生类对象可以看作是基类对象,支持多态性。

  • 代码示例:

// 基类
class Base {
public:
    int publicMember;
protected:
    int protectedMember;
private:
    int privateMember;
};

// 公有继承示例
class DerivedPublic : public Base {
public:
    void accessBaseMembers() {
        publicMember = 1;       // 可以访问基类的公有成员
        protectedMember = 2;    // 可以访问基类的保护成员
        // privateMember = 3;   // 私有成员在派生类中不可访问
    }
};

2. 私有继承(private inheritance)

  • 知识点:

  • 派生类继承基类的公有成员和保护成员,但它们都变成了私有成员。

  • 私有继承会隐藏基类的所有成员,只有派生类自己可以访问这些成员。

  • 用于实现"has-a"关系,派生类包含一个基类对象作为其一部分,但外界不可访问基类的接口。

  • 代码示例:

// 私有继承示例
class DerivedPrivate : private Base {
public:
    void accessBaseMembers() {
        publicMember = 1;       // 可以访问基类的公有成员(在派生类中变为私有)
        protectedMember = 2;    // 可以访问基类的保护成员(在派生类中变为私有)
        // privateMember = 3;   // 私有成员在派生类中不可访问
    }
};

3. 保护继承(protected inheritance)

  • 知识点:

  • 派生类继承基类的公有成员和保护成员,但它们都变成了保护成员。

  • 保护继承的效果类似于私有继承,但派生类的成员函数可以访问基类的接口。

  • 用于限制外界对基类接口的访问,派生类和其子类可以访问基类的接口。

  • 代码示例:

// 保护继承示例
class DerivedProtected : protected Base {
public:
    void accessBaseMembers() {
        publicMember = 1;       // 可以访问基类的公有成员(在派生类中变为保护成员)
        protectedMember = 2;    // 可以访问基类的保护成员(在派生类中变为保护成员)
        // privateMember = 3;   // 私有成员在派生类中不可访问
    }
};
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中的类继承和派生是面向对象编程中的重要概念。在C++中,可以使用公有继承、保护继承和私有继承来实现类的继承和派生。 公有继承是最常见的一种继承方式,它可以使得基类的公有成员在派生类中仍然是公有的,保护成员在派生类中变为保护的,私有成员在派生类中不可访问。\[1\] 保护继承是一种特殊的继承方式,它可以使得基类的公有和保护成员在派生类中变为保护的,私有成员在派生类中不可访问。\[2\] 私有继承是一种特殊的继承方式,它可以使得基类的公有和保护成员在派生类中变为私有的,私有成员在派生类中不可访问。私有继承主要用于实现"实现继承",即派生类通过继承基类的实现来实现自己的功能。\[3\] 在派生类中,可以使用基类的成员函数和成员变量,但是访问权限受到继承方式的限制。公有继承和保护继承可以访问基类的成员函数和成员变量,私有继承只能在派生类内部访问基类的成员函数和成员变量。 总结起来,C++中的类继承和派生可以通过公有继承、保护继承和私有继承来实现,不同的继承方式决定了派生类对基类成员的访问权限。 #### 引用[.reference_title] - *1* *2* [C++ 面向对象 - 类的继承与派生](https://blog.csdn.net/m0_62598965/article/details/124610795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++面向对象-继承和派生](https://blog.csdn.net/D23333A/article/details/116640148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值