C++中的三种继承public,protected,private详细解析

让我来为大家讲解一下C++中的三种继承——public、protected和private。

什么是继承

在C++中,继承是一种从已存在的类中派生出新的类的机制。通过继承,新的类可以获得已存在的类的所有属性和行为。

三种继承方式

public继承

public继承是基类(被继承类)中的public和protected成员在派生类(继承类)中仍旧保持public和protected属性,而基类中的private成员不可见。下面是一个示例:

#include <iostream>
using namespace std;

// 基类
class Base{
    public:
        int public_var = 0;
    private:
        int private_var = 0;
    protected:
        int protected_var = 0;
};

// 派生类
class Derived : public Base{
    public:
        void access_base_member(){
            cout << public_var << endl;  // 可以访问public属性
            // cout << private_var << endl;  // 错误:不能访问private属性
            cout << protected_var << endl;  // 可以访问protected属性
        }
};

int main(){
    Derived derived;
    derived.access_base_member();
    return 0;
}

输出结果:

0
0

protected继承

protected继承是基类中所有成员都被继承到派生类中,且所有成员在派生类中变成protected属性。在派生类及其实例中,protected成员可以被访问,基类对象和非派生类(即没有被继承的类)不可以访问。下面是一个示例:

#include <iostream>
using namespace std;

// 基类
class Base{
    public:
        int public_var = 0;
    private:
        int private_var = 0;
    protected:
        int protected_var = 0;
};

// 派生类
class Derived : protected Base{
    public:
        void access_base_member(){
            cout << public_var << endl;  // 可以访问protected属性
            // cout << private_var << endl;  // 错误:不能访问private属性
            cout << protected_var << endl;  // 可以访问protected属性
        }
};

int main(){
    Derived derived;
    derived.access_base_member();
    return 0;
}

输出结果:

0
0

private继承

private继承是基类中所有成员都被继承到派生类中,且所有成员在派生类中变成private属性。在派生类及其实例中,private成员可以被访问,基类对象和非派生类不可以访问。下面是一个示例:

#include <iostream>
using namespace std;

// 基类
class Base{
    public:
        int public_var = 0;
    private:
        int private_var = 0;
    protected:
        int protected_var = 0;
};

// 派生类
class Derived : private Base{
    public:
        void access_base_member(){
            cout << public_var << endl;  // 可以访问private属性
            // cout << private_var << endl;  // 错误:不能访问private属性
            cout << protected_var << endl;  // 可以访问private属性
        }
};

int main(){
    Derived derived;
    derived.access_base_member();
    return 0;
}

输出结果:

0
0

总结

通过上述示例,我们了解了C++中的三种继承方式:public、protected和private,它们的区别在于派生类中基类成员属性的变化以及对基类成员的访问权限不同。需要注意的是,对于访问级别,不仅影响派生类的成员函数,也影响到通过派生类对象访问的基类成员函数。

以上是关于C++中三种继承方式的详细解析,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的三种继承public,protected,private详细解析 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • DOS窗口命令和单表简单查询

    下面我来详细讲解一下“DOS窗口命令和单表简单查询”的完整攻略。 DOS窗口命令 DOS窗口命令可以让我们在Windows系统中通过命令行的方式来操作计算机。以下是一些常见的DOS窗口命令: dir命令 dir命令可以列出当前目录下的文件和文件夹。 示例:在D盘根目录下列出所有文件和文件夹,命令为:dir D:\ cd命令 cd命令可以进入指定的目录。 示例…

    other 2023年6月26日
    00
  • 修改Oracle 数据库实例字符集

    修改Oracle数据库实例字符集 在运维Oracle数据库的过程中,有时候需要修改数据库实例的字符集。这个过程非常重要,因为它直接影响我们存储和读取数据库中的数据。在这篇文章中,我将会介绍如何修改Oracle数据库实例字符集。 了解Oracle数据库实例字符集 Oracle数据库实例字符集分为以下两个部分:- 数据库字符集(Database Characte…

    其他 2023年3月28日
    00
  • long转换为integer

    以下是详细讲解“long转换为integer的完整攻略”的标准Markdown格式文本,包含两个示例说明: long转换为integer的完整攻略 在Java中,long和integer是两种不同的数据类型。有时候需要将long类型的数据转换为integer类型的数据。本攻略将介绍如何将long类型的数据转换为integer类型的数据。 步骤一:使用强制类型…

    other 2023年5月10日
    00
  • Windows10预览版18999出现无法关机和重启怎么办?(附解决方法)

    Windows10预览版18999出现无法关机和重启怎么办? 如果你的Windows10预览版18999出现无法关机或重启的情况,可能是因为操作系统的某些组件出现了问题。幸运的是,这些问题并不是无解的,下面我们将为你提供一些有效的解决办法。 解决方法一:使用命令行重启或关机 步骤1:按下”Win + R”组合键打开运行窗口; 步骤2:在运行窗口中输入“cmd…

    other 2023年6月27日
    00
  • yarn与npm的命令行小结

    yarn与npm的命令行小结 在JavaScript的世界里,node.js和包管理器(npm和yarn)是必不可少的工具。在这篇文章中,我们将了解npm和yarn的命令行,包括它们的区别以及如何使用它们来管理和安装包。 npm与yarn的区别 npm npm是JavaScript的默认包管理器,它随node.js一起安装。它是一个开源的库,是JavaScr…

    other 2023年6月26日
    00
  • python生成guid

    Python生成GUID的完整攻略 GUID(全局唯一标识符)是一种用于标识对象的标准格式,它通常由32个十六进制数字组成可以用于唯一标识对象。在Python中,可以使用uuid模块来生成GUID。本文将介绍Python生成GUID的完整攻略,包括两个示例说明。 安装uuid模块 在Python中,可以使用uuid模块生成GUID。如果您的Python环境中…

    other 2023年5月9日
    00
  • 微信小程序onShareTimeline()实现分享朋友圈

    微信小程序onShareTimeline()实现分享朋友圈攻略 微信小程序提供了onShareTimeline()方法,可以实现在小程序中分享内容到朋友圈。下面是详细的攻略,包含了两个示例说明。 步骤一:在页面配置中开启分享功能 首先,在小程序的页面配置文件(app.json)中,需要开启分享功能。在\”pages\”字段中的每个页面对象中,添加\”shar…

    other 2023年8月3日
    00
  • i7 8809G/8705G值得买吗?Intel AMD合体CPU i7-8705G/8809G对比深度评测

    当然,我可以为您提供一份关于i7-8705G和i7-8809G的对比深度评测攻略。以下是完整的攻略,包含两个示例说明: i7-8705G/8809G对比深度评测 1. 性能对比 示例说明一:CPU性能 i7-8705G和i7-8809G都是Intel和AMD合作推出的混合CPU,具备强大的计算能力。然而,i7-8809G采用了更高的基础频率和更大的缓存,因此…

    other 2023年10月17日
    00
合作推广
合作推广
分享本页
返回顶部