当前位置: 首页 > news >正文

(Note)C++中的继承方式

在C++中,继承语法为:

class 派生类名:[继承方式] 基类名{
    派生类新增加的成员
};

其中,共有三种继承方式可以选择:public(公有的)、protected(受保护的)、private(私有的)。

公有的继承:  class Son : public Father {};
受保护的继承:class Son : protected Father {};
私有的继承:  class Son : private Father {};

如果不写继承方式,则默认为private(私有的)。

不同的继承方式会影响基类成员在派生类中的访问权限。

三种不同的继承方式中,基类成员的访问权限如下:

(1)public继承方式

  1. 基类中所有 public 成员在派生类中为 public 属性;
  2. 基类中所有 protected 成员在派生类中为 protected 属性;
  3. 基类中所有 private 成员在派生类中不能使用。

(2)protected继承方式

  1. 基类中的所有 public 成员在派生类中为 protected 属性;
  2. 基类中的所有 protected 成员在派生类中为 protected 属性;
  3. 基类中的所有 private 成员在派生类中不能使用。

(3)private继承方式

  1. 基类中的所有 public 成员在派生类中均为 private 属性;
  2. 基类中的所有 protected 成员在派生类中均为 private 属性;
  3. 基类中的所有 private 成员在派生类中不能使用。
     

可以看出:

1.基类成员在派生类中的访问权限不高于继承方式中指定的权限

2.无论何种继承方式,基类中的 private(私有的) 成员在派生类中始终不能被使用

3.如果想让基类的成员能够被派生类继承并使用,那这些成员只能声明为 public(公有的) 或 protected(受保护的)

4.如果想让基类的成员不能通过对象访问,但可以在派生类中使用,那么只能声明为 protected(受保护的)

Reference:

C++ 继承详解_TABE_的博客-CSDN博客_c++继承

c++中的继承方式_Narcissusyaa的博客-CSDN博客_c++ 继承方式

相关文章:

  • qemu gutest network configuration
  • 【25】 冒险和预测(四):今天下雨了,明天还会下雨么?
  • CREO:CREO软件之工程图【插入页面】、【装配图出工程图】、【将视图转为绘制图元】、【工程图输入到CAD中去修改】的简介及其使用方法(图文教程)之详细攻略
  • 强大且超实用的论文阅读工具——ReadPaper
  • 完整解析快速排序
  • 评估与监控CI/CD流水线
  • 基于SpringBoot的在线学生请假管理系统的设计与实现毕业设计源码060935
  • 地铁听书系列之“看破不说破,81个为人处事潜规则”8月圆满收尾20220831
  • Revit中模板类图元使用后如何处理?
  • 操作系统:2.2处理机调度
  • 飞浆(一)环境以及第一个简单例子
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • 利用STM32CubeMX软件生成USB_HOST_CDC驱动ME909s-821ap(4G通信模块)
  • 第7章 Spring中的Bean的管理
  • 计算机组成原理_存储系统结构
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • bootstrap创建登录注册页面
  • JavaWeb(学习笔记二)
  • PAT A1120
  • React系列之 Redux 架构模式
  • TCP拥塞控制
  • Unix命令
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 读懂package.json -- 依赖管理
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关于 Cirru Editor 存储格式
  • 理清楚Vue的结构
  • 力扣(LeetCode)56
  • 想写好前端,先练好内功
  • 用 Swift 编写面向协议的视图
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 【干货分享】dos命令大全
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #、%和$符号在OGNL表达式中经常出现
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (4)(4.6) Triducer
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (c语言)strcpy函数用法
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (力扣)1314.矩阵区域和
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三)uboot源码分析
  • (转) Face-Resources
  • (转)3D模板阴影原理
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)大型网站架构演变和知识体系
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET Core 中的路径问题
  • .net framework profiles /.net framework 配置
  • .net 受管制代码
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • @JsonSerialize注解的使用