C++:继承-继承权限

在C++中,类的权限分为公有、私有和保护三种。这些权限控制了类的成员(数据成员和成员函数)对外部代码的可见性和访问性。

  1. 公有(public)权限

    在公有权限下声明的成员可以被类的外部代码直接访问;公有成员在类的派生类中仍然可以被访问。
  2. 私有(private)权限

    在私有权限下声明的成员对于外部代码是不可见的;只有类的成员函数可以访问私有成员;私有成员不能被派生类访问,即使是公有继承也是如此。
  3. 保护(protected)权限

    在保护权限下声明的成员对于外部代码是不可见的;类的派生类可以访问保护成员;保护成员在派生类中仍然是保护的,对于外部代码是不可见的。

在 C++类的继承中,也对应着三种继承权限,分别是公有继承(public inheritance)、保护继承(protected inheritance)和私有继承(private inheritance)。这些权限决定了派生类如何继承基类的成员以及外部访问的方式。

  1. 公有继承(public inheritance)

    在公有继承中,基类的公有成员在派生类中仍然是公有的,基类的保护成员在派生类中仍然是保护的,基类的私有成员不会被派生类继承。

    派生类对象可以直接访问基类的公有成员,但不能访问基类的私有成员。

    外部代码可以访问派生类对象中的公有成员,但不能访问保护成员或私有成员。

    //基类
    class Animal
    {
    public:
        Animal();
        ~Animal();
    ​
        int m_nAge;
    ​
    private:
        int testA;
    protected:
        int testB;
    };
    ​
    //派生类(公有继承)
    class Cat : public Animal
    {
    public:
        Cat();
        ~Cat();
        
    }

    上述代码中的派生类就属于通过对基类进行公有继承得到,此时Animal类中的公有成员被继承至Cat类中也是公有成员,Animal类的保护成员在Cat类中仍然是保护的,但是Animal类的私有成员不会被Cat类继承。如此时我在Cat类中对基类中的私有成员TestA和保护成员TestB进行设置/访问,那么此时可以发现私有成员TestA无法访问,保护成员TestB可以正常访问;是因为私有成员并没有被继承。

    总结:

    公有继承:
            基类                  派生类
          公有成员     --->       公有成员
          保护成员     --->       保护成员
          私有成员                无法继承
    
  2. 保护继承(protected inheritance)

    在保护继承中,基类的公有和保护成员在派生类中都变成了保护成员,类的私有成员依然不会被派生类继承。

    派生类对象可以访问基类的公有和保护成员,但外部代码无法直接访问派生类对象的成员。

    外部代码无法访问派生类对象中的任何成员。

    保护继承:

    //基类
    class Animal
    {
    public:
        Animal();
        ~Animal();
    ​
        int m_nAge;
    ​
    private:
        int testA;
    ​
    protected:
        int testB;
    };
    ​
    //派生类(保护继承)
    class Cat : protected Animal
    {
    public:
        Cat();
        ~Cat();
    }

    派生类 Cat:使用保护继承方式继承自 Animal 类,意味着基类 Animal 的公有和保护成员在 Cat 类中都变成了保护的。外部无法直接访问 Cat 对象的成员。Cat 类中可以访问继承自 Animal 的公有和保护成员。

总结:

保护继承
        基类                  派生类
      公有成员     ---->      保护成员
      保护成员     ---->      保护成员
      私有成员                无法继承

3.私有继承(private inheritance)

在私有继承中,基类的公有和保护成员在派生类中都变成了私有的,类的私有成员依然不会被派生类继承。

派生类对象可以访问基类的公有和保护成员,但外部代码无法直接访问派生类对象的成员。

外部代码无法访问派生类对象中的任何成员。

私有继承:

//基类
class Animal
{
public:
    Animal();
    ~Animal();
​
    int m_nAge;
    
private:
    int testA;
​
protected:
    int testB;
};
​
//派生类
class Cat : private Animal
{
public:
    Cat();
    ~Cat();
}

派生类 Cat:采用私有继承方式继承自 Animal 类,这意味着基类 Animal 的公有和保护成员在 Cat 类中都变成了私有的。Cat 类中可以访问继承自 Animal 的公有和保护成员,但外部代码无法访问。

总结:

      私有继承

        基类                  派生类
       公有成员     --->      私有成员
       保护成员     --->      私有成员
       私有成员               无法继承

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/603300.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32、GD32驱动PCA9685控制舵机源码分享

一、PCA9685介绍 PCA9685是一种16通道PWM(脉宽调制)控制器芯片,由NXP Semiconductors公司生产。它具有高速I2C总线接口,可以通过I2C总线与微控制器或其他设备进行通信。PCA9685广泛应用于各种需要精确控制多路PWM信号的应用&…

一种利用MPLS实现IPv4网络向IPv6网络过度的技术

前言 6PE(IPv6 Provider Edge)是一种利用MPLS((Multi-Protocol Label Switching),实现IPv4网络向IPv6网络过渡的技术。6PE技术能够使得多个IPv6孤岛网络采用MPLS LSP隧道,跨越IPv4 MPLS骨干网相互进行通信…

碳课堂|如何开展碳排放核算? ISO 14064-2 项目层次要点解读

为提高企业组织碳排放报告信誉度,国际标准化组织(ISO)发布了ISO14064标准,其中《ISO 14064-2 项目层次上对温室气体减排和清除增加的量化、监测和报告的规范及指南》提供了项目策划阶段的原则要求,以及项目实施阶段的量…

VBA中类的解读及应用第十二讲:限制复选选择(上)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

Mybatis Plus二级缓存 使用@CacheNamespace 失效@CacheNamespace和@CacheNamespaceRef

1、注解 CacheNamespace(flushInterval 100000,eviction LruCache.class,readWrite false,size 1024)2、xml配置 <cache eviction "LRU" flushInterval "100000" readOnly "true" size "1024"/> 二级缓存&#xff0c;配置文…

基础设施即代码——灵活构建具备弹性和可扩展性的基础设施

本书的初衷是帮助大家更好地编写基础设施即代码(Infrastructure as Code&#xff0c;IaC)&#xff0c;并且能够在不影响关键业务系统的情况下&#xff0c;稳定高效地变更基础设施资源。本书重点介绍了个人、团队或公司在基础设施系统中应用的模式与实践&#xff0c;聚焦能够应用…

【C++】——内存管理

&#x1f600;&#x1f600;前言 好久没更新了&#xff0c;五一小长假&#xff0c;有点玩脱了&#xff0c;今天赶紧补一篇博客&#xff0c;回回状态 一 c/c内存分配 下面看下面一段代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; i…

华为eNSP中型企业局域网网络规划设计(上)

敲半天一个闪退全™给我干没了呜呜呜&#xff0c;eNSP&#xff0c;wcnm&#xff01;wcnm&#xff01;wcnm&#xff01; →b站传送门&#xff0c;感谢大佬← →华为eNSP中型企业局域网网络规划设计&#xff08;下&#xff09;← →拓扑图传送门&#xff0c;可以自己配置着玩←…

抖音小店怎么运营?最全的运营攻略来了?

大家好&#xff0c;我是电商糖果 很多开好店铺的小伙伴&#xff0c;都会遇到一个难题&#xff0c;那就是不会运营店铺。 可能好几个月才出十几单&#xff0c;甚至体验分都没有弄出来。 说实话&#xff0c;这种情况糖果见多了。 糖果做抖音小店也有四年多了&#xff0c;也开…

【全开源】Java淘宝客多商户系统APP源码任务聚合优惠券多商户源码

功能特点&#xff1a; 商户管理&#xff1a;支持多商户入驻&#xff0c;包括商户的注册、审核、信息维护等功能。同时&#xff0c;系统可以对商户进行分类、排序和搜索&#xff0c;方便管理。全行业覆盖√ miui52086商品管理&#xff1a;提供商品发布、编辑、上下架等功能&…

PMP考试没过怎么办?如何补考?(附复核流程)

最近刷小红书&#xff0c;看很多人都在晒PMP通过的成绩截图&#xff0c;一方面为大家开心&#xff0c;终于拿到了期盼已久的PMP&#xff0c;但同时也有宝子发挥失常没通过考试&#xff0c;所以这期针对没考过的宝子们&#xff0c;出一期复盘文章&#xff0c;无论结果如何&#…

QT4-升级到QT5(1)

1.C报错汇总_nafxcwd.lib error lnk2001-CSDN博客1 1.QT3Support QWidget::setShown 改为QWidget::setVisible 2.头文件 #include<QWidget> 3.部分函数替换

印章常见问题如何防?君子签电子印章实现管章、用章、控章一体化

企业公章管理和使用关乎企业经营&#xff0c;近年来&#xff0c;各类印章问题层出不穷&#xff1a;“通过PS、图片章伪造授权、合同等文件”、“冒充公司员工利用假身份、假印章签约”、“管理层私刻印章伪造业务材料”等常见假印章套路&#xff0c;让企业防不胜防&#xff0c;…

内网渗透(二)

预备知识 什么是域&#xff1f; 域是若干台计算机组成的集合&#xff0c;一个电脑也是。域中的电脑是分等级的&#xff0c;分为域控和成员机。 如何安装域&#xff1f; 在服务器管理中添加服务器角色&#xff0c;添加域服务 如何加入域? 首先一定要修改DNS服务器 ip为域…

解密某游戏的数据加密

前言 最近有个兄弟通过我的视频号加我&#xff0c;咨询能否将这个dubo游戏游戏开始前就将数据拿到从而进行押注&#xff0c;于是通过抓包工具测试了下&#xff0c;发现数据有时候是明文&#xff0c;有时候确实密文&#xff0c;大致看了下有这几种加密&#xff1a;Md5aes、Md5&a…

squeeze的用法

squeeze是压缩张量的命令 import torch a torch.randn(1,3) print(a) print(a.shape) 比如说squeeze&#xff08;&#xff1f;&#xff09;括号里是啥 就是在哪个维度上删除维度为1 之后的结果 比如上上面那个里子 a是&#xff08;[[]]&#xff09; 但是在下面那个例子中d…

软胶囊弹性检测:确保药品质量与患者安全的关键步骤

软胶囊弹性检测&#xff1a;确保药品质量与患者安全的关键步骤 在医药领域&#xff0c;软胶囊作为一种常见的药物载体&#xff0c;其质量的优劣直接关系到药物的有效性和患者的安全。软胶囊的弹性作为其质量评估的重要指标之一&#xff0c;不仅影响其储存和运输的稳定性&#x…

社交客户关系管理(SCRM),和传统CRM的区分

一、SCRM是什么 SCRM是社交客户关系管理&#xff08;Social Customer Relationship Management&#xff09;的缩写&#xff0c;是指通过利用社交媒体和社交网络来管理和建立与客户之间的关系。SCRM将传统的客户关系管理&#xff08;CRM&#xff09;与社交媒体的互动和数据整合…

vue+sortablejs来实现列表拖拽——sortablejs的使用

sortablejs官网:https://sortablejs.com/ 最近在看form-builder组件&#xff0c;发现里面有用到sortablejs插件&#xff0c;用于实现拖拽效果。 但是这个官网中的配置&#xff0c;实在是看不懂&#xff0c;太简单又太复杂&#xff0c;不实用。 下面记录一下我的使用&#xff…

光伏设计的核心要素有哪些?

光伏设计是可再生能源领域中的一个重要分支&#xff0c;它涉及到将太阳能转换为电能的整个过程。在光伏系统的设计和构建过程中&#xff0c;有几个核心要素需要被充分考虑和精确计算&#xff0c;以确保系统的性能、可靠性和经济效益。 一、光照条件分析 光照条件是光伏系统设计…
最新文章