C++继承的三种方式[ACCESS]

C++继承的定义

两个类的继承关系在派生类中声明,派生类定义使用以下语法:
class DerivedClass: [ACCESS] BaseClass{
//
};
冒号(:)后的[ACCESS]是继承的最高权限级别符,可以是以下三个值(存取权限级别)的其中之一:
public,公共权限,三级(高)
protected,保护权限,二级
private,私有权限,一级(低)
由[ACCESS]的这三个值,从而引出了C++继承的三种方式:
1、公共继承,[ACCESS]是public
2、保护继承,[ACCESS]是protected
3、私有继承,[ACCESS]是private
首先明确一点:基类BaseClass的private成员,在派生类DerivedClass中是无法访问,即不能被继承。

最高权限级别符[ACCESS]

最高权限级别符[ACCESS]的意思是:
在派生类DerivedClass中,继承自基类BaseClass的成员的级别,高于[ACCESS]级别的都将被视为[ACCESS]级别;等于、低于[ACCESS]级别的,原样不动。基类BaseClass的private成员不被继承。

C++继承的三种方式详解如下:

一、公共继承,[ACCESS]是public

[ACCESS]为public时,基类BaseClass的成员级别在派生类DerivedClass中都不变,即public的继续是public、protected的继续是protected,private不被继承。

二、保护继承,[ACCESS]是protected

[ACCESS]为protected时,在派生类DerivedClass中,基类BaseClass的成员级别是public的修改为protected,原来是protected的继续是protected,private不被继承。

三、私有继承,[ACCESS]是private

[ACCESS]为private时,在派生类DerivedClass中,基类BaseClass的成员级别是public和protected的都修改为private,基类BaseClass的private成员不被继承。

实例源码

源码中注释内容有错误两字时,表示此行会发生编译错误,将对应行前的注释删除,再编译即可重现错误
D:\YcjWork\CppTour>vim c2006.cpp

#include <iostream>
using namespace std;/*** 类继承的3种方式
*/// 基类
class Base {
public:int pub;
protected:int prot;
private:int priv;
};// 公有继承
class PublicDerived : public Base {
public:void test() {pub = 1; // 正确,Base的public成员prot = 1; // 正确,Base的protected成员继承为protected// priv = 1; // 错误,Base的private成员不可访问}
};// 保护继承
class ProtectedDerived : protected Base {
public:void test() {pub = 1; // 正确,Base的public成员变为protectedprot = 1; // 正确,Base的protected成员保持为protected// priv = 1; // 错误,Base的private成员不可访问}
};// 私有继承
class PrivateDerived : private Base {
public:void test() {pub = 1; // 正确,Base的public成员变为privateprot = 1; // 正确,Base的protected成员变为private// priv = 1; // 错误,Base的private成员仍不可访问}
};int main() {PublicDerived pub_derived;PrivateDerived priv_derived;ProtectedDerived prot_derived;// 测试基类的访问权限pub_derived.pub = 2; // 正确,PublicDerived的public成员// prot_derived.pub = 1; // 错误,ProtectedDerived的protected基类成员不可访问// priv_derived.pub = 1; // 错误,PrivateDerived的private基类成员不可访问cout << "pub_derived.pub: " << pub_derived.pub << endl;//cout << "prot_derived.pub: " << prot_derived.pub << endl; // 错误,ProtectedDerived的protected基类成员不可访问//cout << "priv_derived.pub: " << priv_derived.pub << endl; // 错误,PrivateDerived的private基类成员不可访问return 0;
}

编译运行

D:\YcjWork\CppTour>gpp c2006D:\YcjWork\CppTour>g++ c2006.cpp -o c2006.exeD:\YcjWork\CppTour>c2006
pub_derived.pub: 2D:\YcjWork\CppTour>

运行截屏
C++继承的三种方式

(全文完)

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

业务封装与映射 -- ODUflex

ODUflex&#xff0c;即灵活速率光数字单元&#xff0c;带宽范围1.25G~100G。目前ITU-T G.709定义了两种形式的ODUflex&#xff0c;基于固定比特速率业务的ODUflex (CBR)和基于包业务的ODUflex (GFP)。 ODUflex特点 高效承载 提供灵活可变的速率适应机制。用户可根据业务大小&…

5. 常用开源数据集快速导入Linux服务器(AutoDL)——深度学习·科研实践·从0到1

目录 1. 查找公开数据 2. 解压到自己的数据盘中 3. 解压常用指令 1. 查找公开数据 参考文档&#xff1a;AutoDL帮助文档-公开数据查找和导入 AutoDL提供了部分常用开源数据&#xff0c;供咱在实例中进行使用&#xff0c;免去下载上传的烦恼&#xff08;直接解压到咱的服务…

OpenAi FunctionCalling 案例详解

源码详细讲解 pdf 及教学视频下载链接&#xff1a;点击这里下载 FunctionCalling的单一函数调用 天气预报查询&#xff08;今天长沙的天气如何&#xff1f;&#xff09; import json import requests from openai import OpenAIclient OpenAI()location "长沙"…

鸿蒙开发知识点速记全解

入门 1、API涵盖应用框架、系统、媒体、图形、应用服务、AI六大领域。 应用框架相关Kit开放能力&#xff1a;Ability Kit&#xff08;程序框架服务&#xff09;、ArkUI&#xff08;方舟UI框架&#xff09;等。系统相关Kit开放能力&#xff1a;Universal Keystore Kit&#xf…

24-10-1-读书笔记(二十一)-《契诃夫文集》(四)下([俄] 契诃夫 [译] 汝龙) 我爱你,娜坚卡。

文章目录 《契诃夫文集》&#xff08;四&#xff09;下&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09;目录阅读笔记记录总结 《契诃夫文集》&#xff08;四&#xff09;下&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09; 十月第一篇&#xff0c;放假了&#xff0c;挺高兴的&…

四、I/O控制方式

1.程序直接控制方式 完成一次读/写的过程 CPU千预频率 每次I/O的数据传输单位 数据流向 优缺点 CPU发出I/0命令后需要不断轮询 极高 字 设备→CPU→内存 内存→CPU→设备 优点:实现简单。在读/写指令之后&#xff0c;加上实现循环检查的一系列指令即可(因此才称为“程…

WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!

前言 今天大姚给大家分享一套基于.NET 8.0 LayUI的快速开发框架&#xff0c;项目完全开源、免费&#xff08;MIT License&#xff09;且开箱即用&#xff1a;WaterCloud。 可完全实现二次开发让开发更多关注业务逻辑。既能快速提高开发效率&#xff0c;帮助公司节省人力成本&…

Stable Diffusion绘画 | 来训练属于自己的模型:打标处理与优化

上一篇完成的打标工作&#xff0c;是为了获取提示词&#xff0c;让AI认识和学习图片的特征。 因此&#xff0c;合适、恰当、无误的提示词&#xff0c;对最终模型效果是相当重要的。 Tag 如何优化 通过软件自动生成的 Tag 只是起到快速建立大体架构的作用&#xff0c;里面会涉…

某大型公园定岗定编项目成功案例纪实

某大型公园定岗定编项目成功案例纪实 ——优化人力配置&#xff0c;实施灵活化人员调整策略&#xff0c;解决忙闲不均问题 【客户行业】文旅行业&#xff1b;事业单位&#xff1b;公园 【问题类型】定岗定编 【客户背景】 某大型公园随着上级政策的改变&#xff0c;公园取…

探索 PixiJS:强大的 2D 图形渲染库

探索 PixiJS&#xff1a;强大的 2D 图形渲染库 演示地址 演示地址 源码地址 源码地址 获取更多 获取更多 随着 Web 技术的发展&#xff0c;越来越多的开发者希望在网页中实现丰富的视觉效果和动画。PixiJS 作为一个高性能的 2D 渲染库&#xff0c;凭借其强大的功能和易用性…

文件名:\\?\C:\Windows\system32\inetsrv\config\applicationHost.config错误:无法写入配置文件

文件名: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config 错误:无法写入配置文件 解决办法&#xff1a; 到C:\inetpub\history中找到最近一次的【CFGHISTORY_00000000XX】文件&#xff0c;点击进去找到applicationHost.config文件&#xff0c;用其覆盖C:\Win…

C++ 游戏开发

C游戏开发 C 是一种高效、灵活且功能强大的编程语言&#xff0c;因其性能和控制能力而在游戏开发中被广泛应用。许多著名的游戏引擎&#xff0c;如 Unreal Engine、CryEngine 和 Godot 等&#xff0c;都依赖于 C 进行核心开发。本文将详细介绍 C 在游戏开发中的应用&#xff0…

B. Brightness Begins Codeforces Round 976 (Div. 2)

原题 B. Brightness Begins 解析 Hint 1 第 i 个灯泡最终状态与 n 的大小无关 Hint 2 第 i 个灯泡最终状态与 i 的约数数量的奇偶性相关 Solution 对任意灯泡 i , 它的最终状态由其约数数量的奇偶性相关, 如果 i 有偶数个约数, 那么会是亮的, 否则会是暗的. 换句话说, 如…

使用Materialize制作unity的贴图,Materialize的简单教程,Materialize学习日志

Materialize 官网下载地址&#xff1a;http://boundingboxsoftware.com/materialize/ github源码地址&#xff1a;https://github.com/BoundingBoxSoftware/Materialize 下载地址&#xff1a;http://boundingboxsoftware.com/materialize/getkey.php 下载后解压运行exe即可 …

安装epic games错误码2738解决(安装ue错误码2738)

这个错误不好找到解决方案&#xff0c;尝试删除注册表以及通过电脑管家下载安装都不生效&#xff0c;仍然会错误2738。直到找到了这个解决方案。 1.cmd然后右键以管理员身份运行&#xff0c; 2.cd %windir%\syswow64进入该目录 3.reg delete “HKCU\SOFTWARE\Classes\Wow6432No…

C语言 | Leetcode C语言题解之题451题根据字符出现频率排序

题目&#xff1a; 题解&#xff1a; #define HASH_FIND_CHAR(head, findint, out) HASH_FIND(hh, head, findint, sizeof(char), out) #define HASH_ADD_CHAR(head, intfield, add) HASH_ADD(hh, head, intfield, sizeof(char), add)struct HashTable {char key;int val;UT_ha…

【STM32单片机_(HAL库)】4-4【定时器TIM】脉冲计数配置步骤及实验

脉冲计数配置步骤 1.硬件 STM32单片机最小系统按键模块 2.软件 定时器HAL驱动层文件添加counter驱动文件添加GPIO常用函数main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "…

6.3 API网关 架构模式 分类 和 应用实践

6.3 API网关 架构模式 分类 和 应用实践 目录概述需求&#xff1a; 设计思路实现思路分析1.反向代理模式2.微服务模式3.单体模式4.服务网格模式 分类&#xff1a;1.2.1 按功能分类3.2.2 按部署方式分类4.2.3 按协议支持分类&#xff1a; 应用实践&#xff1a; 参考资料和推荐阅…

Windows 开发工具使用技巧 QT使用安装和使用技巧 QT快捷键

一、QT配置 1. 安装 Qt 开发框架 1、下载 1、进入下载地址 下载地址1 (官方, 需注册账号)&#xff1a; https://www.qt.io/download下载地址2&#xff08;推荐&#xff09;&#xff1a; http://download.qt.io/http://download.qt.io/archive/qt/ &#xff08;或更直接的…

植物叶片病害检测数据集 5100张 29类 带标注 voc yolo

植物叶片病害检测数据集 5100张 29类 带标注 voc yolo 植物叶片病害检测数据集 名称 植物叶片病害检测数据集 (Plant Leaf Disease Detection Dataset) 规模 图像数量&#xff1a;5154张图像。类别&#xff1a;29种病害类型。分类名: (图片张数&#xff0c;标注个数) Tomato…