对于C++保护继承方式的一点理解

C++ 继承方式 类的成员属性和继承方式组合后有多种访问方式,需了然于心。继承方式有public、protected、private三种,有四种写法,因为还有一种默认继承的方式。一般情况不使用默认继承的方式,直接明确继承方式,方便阅读。开发中使用public继承方式较多。 阅读详情

最近在某书上看到这样一句话--“所以,在保护继承时,基类的成员也只能由直接派生类访问,而无法再往下继承。”

有图有真相,上个书的截图如下:

 

对此,我疑问不解,一直觉得只是将public,降级到了protected,怎么会“只能由直接派生类访问,而无法再往下继承”呢??我编了如下代码为验证这个问题:

class Base
{
public:
 void print()
 {
  cout << "class Base" << endl;
 }
 Base()
 {
  i = 10;
 }
protected:
 int i;
};

class Drived: protected Base
{
public:
 void print()
 {
  cout << "class Drived: public Base" << endl;
 }
};

class DrivedSub: protected Drived
{
public:
 void print()
 {
  cout << "Sub drived class is " << i << endl;
 }
};

int _tmain(int argc, _TCHAR* argv[])
{

 DrivedSub ds;
 ds.print();
 return 0;

}

结果正确的输出:Sub drived class is 10

说明在protected继承时,间接的子类中是可以访问基类的protected的。同理,public成员也是可以访问的。

 

以上仅一家之言,欢迎大家拍砖。

 

百度搜了一下,错误的文章还不少,大家都是抄来抄去的:

http://www.baidu.com/s?tn=baiduhome_pg&bs=protected%C1%BD%B4%CE%BC%CC%B3%D0&f=8&rsv_bp=1&wd=%CB%F9%D2%D4%A3%AC%D4%DA%B1%A3%BB%A4%BC%CC%B3%D0%CA%B1%A3%AC%BB%F9%C0%E0%B5%C4%B3%C9%D4%B1%D2%B2%D6%BB%C4%DC%D3%C9%D6%B1%BD%D3%C5%C9%C9%FA%C0%E0%B7%C3%CE%CA&inputT=26943

 

http://media.openonline.com.cn/media_file/200708/fushi/0803/C++yuyancxsj/web/lesson/chapter18/j6.htm

http://hi.baidu.com/rainysky_2006/blog/item/c9dfdb3dceb270c79e3d6230.html

http://hi.baidu.com/wentaokou/blog/item/a2541ccfff26ac0e93457ef6.html

 

BarTender破解版风险与低成本正版替代方案全解析 在工业自动化和企业信息化领域,标签打印与条形码技术是连接物理世界与数字系统的关键环节。其核心原理是通过软件驱动打印设备,将可变数据(如序列号、生产日期)与固定模板结合,生成可追溯的标识载体。这项技术的价值在于实现生产流程可视化、供应链管理精细化与质量控制自动化,广泛应用于仓储物流、制造执行、零售门店等场景。然而,软件授权合规性常成为企业成本控制的痛点,尤其面对BarTender这类行业标准工具时,部分用户可能寻求破解方案。但破解版软件通常采用内存补丁、伪造许可证等技术手段绕过验证,不仅存在法律风险,更会引发 阅读详情

相关推荐

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 945

C++中三种继承方式的详解

C++中的继承方式有三种,分别是公有继承、私有继承和保护继承。公有继承是最普遍和默认的继承方式,允许派生类完全访问基类的公有成员函数和数据,派生类还可以添加自己的数据成员和成员函数,从而扩展基类的功能。私有继承是一种对基类进行实现细节隐藏的方式,只有派生类的内部可以直接访问和调用被继承类中的私有成员。保护继承是介于公有继承和私有继承之间的一种继承方式,它保护基类成员不被随意访问和修改,同时也可以在派生类的内部和子类中进行访问,实现更为灵活的功能。

行到水穷处,坐看云起时。 9369

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 326

【C++】继承 ⑤ ( public 公有继承 - 示例分析 | protected 保护继承 - 示例分析 | private 私有继承 - 示例分析 )

一、public 公有继承 - 示例分析 1、public 公有继承 2、代码示例 - public 公有继承 二、protected 保护继承 - 示例分析 1、protected 保护继承 2、代码示例 - protected 保护继承 三、private 私有继承 - 示例分析 1、private 私有继承 2、代码示例 - private 私有继承

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

AD服务器搭建

一、角色安装1)打开服务器管理器,添加 角色和功能;2) 点 下一步;3)点 下一步;4)点 下一步;5)点击安装;6-1)将此服务器提升为域控制器;6-2)点下一步;6)输入密码 点 下一步;7)自动生成LIXF,点击下一步;8)确认目录,点下一步;8)确认安装条件,点安装; 8)安装成功,点关闭;...

潇峰的博客 6452

常见的十大量化投资策略(附源码)

量化投资策略是利用量化的方法,进行金融市场的分析、判断和交易的策略、算法的总称。著名的量化投资策略有以下10种(注:策略源码模板不能直接用于实盘交易,仅供探讨交流) 01、海龟交易策略 海龟交易策略是一套非常完整的趋势跟随型的自动化交易策略。这个复杂的策略在入场条件、仓位控制、资金管理、止损止盈等各个环节,都进行了详细的设计,这基本上可以作为复杂交易策略设计和开发的模板。 海龟交易策略源码:https://www.myquant.cn/docs/python_strategyies/110 0.

小壁虎的春天 2万+

C++学习8:C++继承:公有、保护、私有继承

C++继承:公有、保护、私有继承

4353

大模型选型实战指南|教育行业:108个模型「闭卷考试」实测,这3类应用场景直接抄作业!

教育行业大模型选型必读 1.闭卷考试!独家评测集:用最新K12真题(小学-高中全学科)构建“闭卷考场”,108个模型同台竞技,数据污染率<5%(传统评测集污染率超60%) 2.价格透明对比:40元/M tokens的阿里系模型VS 2元/M tokens的字节系、腾讯系模型,谁更值? 3.四大选型禁区:>60元但得分<75的模型被列入不推荐名单(附避坑清单) 4.核心结论直出:教学核心环节必须用专用模型,90%场景用通用模型可降本50%+

easyllm的博客 1523

c++继承

在C++中,继承是面向对象编程的重要概念,通过继承可以创建一个新类,该类继承了另一个已存在的类的特性和行为。C++中的继承方式主要有三种:public(公有的)、protected(受保护的)和private(私有的)。这些继承方式决定了派生类中如何访问基类的成员。

u012011912的博客 647

【AUTOSAR-DCM】-3.1-将CDD导入CFG并查看$22服务配置变化(UDS诊断DID带一个Data)

案例背景:(共8页精讲) 在《【UDS诊断描述文件CDD】-3.2-编辑CDD给$22服务创建一个带一个Data的DID(dataIdentifier)数据标识符》中,适应使用CANdela Studio在CDD中创建一个带一个Data的DID(dataIdentifier)数据标识符,见图0-1。现在我们将该CDD文件导入到CFG(DaVinci Configurator),看看配置会发生哪些变化。 图0-1 目录 1 将诊断描述文件CDD导入CFG(DaVinci Configurator.

「汽车电子助手」的博客 1633

YOLOv8改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 + 完整代码】

yolov8,yolov8创新,yolov8改进

kay_545 2566

C++ ---- 继承

本文主要介绍继承的相关知识,如继承相关的面试题,继承的概念及定义。基类和派生类的赋值转换。继承中的作用域,派生类的默认成员函数特点。继承与友元,继承与静态成员函数。单继承,多继承,菱形虚拟继承以及菱形虚拟继承带来的二义性问题,什么是虚继承,虚继承的原理,虚基表的概念。继承和组合的比较等。

小张的博客 1655

OCS2 入门教程(一)

OCS2 是专为切换系统优化控制(ptimalontrol forwitchedystems,OCS2)定制的 C++ 工具箱。该工具箱提供以下算法的高效实现:SLQ:连续时间域约束 DDPiLQR:离散时域约束 DDPSQP:基于 HPIPM 的多重打靶算法IPM: 基于非线性内点法的多重搜索算法SLP:基于 PIPG 的顺序线性规划算法OCS2 通过增强拉格朗日法(Augmented Lagrangian)或松弛障碍法(relaxed barrier methods)处理一般路径约束。

机器人控制与仿真应用 7837

【c++】cpp类的继承

c++类的继承

hutaotaotao的博客 2299

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C++类的继承(二)一文吃透继承

大家好,这里是小张,今天继续给大家带来**类的继承**,上一次我们说到了什么叫做继承,和继承的一些语法,今天就由小张来继续给大家讲解一下继承的三种方式,继承中的对象模型以及继承中的构造函数和析构函数的顺序,在此希望能够帮助到大家更好的理解类的继承。 首先我们先来看继承的三种方式,继承分为公共继承,保护继承以及私有继承,父类中的私有属性在子类中谁也访问不到,如果是公共继承,父类的公共属性在子类中仍是公共属性,父类的保护属性在子类依然是保护属性,私有还是私有,如果是保护继承,父......

weixin_64067830的博客 5万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【转载】C++ 公有 私有 保护与继承

C++ 基础之公有、私有和保护 公有继承、私有继承和保护继承,什么七七八八的,一句话说清楚。 数据成员和成员函数的公有、私有和保护 类的定义 我们知道,定义一个类,类里面的成员包括数据成员(属性)和成员函数(方法)。数据成员是描述类的属性的一些数据,成员函数是描述类...

qiuqiyuebai的博客 1674

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【C++】类的继承以及继承方式

💡什么是继承?💡为什么要有继承机制?💡如何理解继承?💡如何使用继承?💡继承方式

翼同学 1422

在保护继承中基类的共有成员_C++继承:公有,私有,保护

from:http://blog.youkuaiyun.com/crayondeng/article/details/144985391. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能...

weixin_31437187的博客 2852

公有继承,私有继承,保护继承

一.公有继承 1.在声明一个派生类时将基类的继承方式指定为public,称为公有继承。 2.用公有继承方式建立的派生类称为公有派生类,其基类称为公有基类 例,公有继承的测试 #include<iostream> using namespace std ; class A { public : void get_XY( ) { cout << "Enter two numbers of x, y : " ; cin >> x

qq_45838321的博客 2363

C++三种继承方式

一、公有继承(public) 基类成员对派生类的可见性为:基类的公有成员和保护成员可见,基类的私有成员不可见。 基类成员对派生类对象的可见性为:基类的公有成员可见,保护成员和私有成员不可见,即通过派生类的对象只能访问基类的public成员。 所以,在公有继承时,派生类的对象可以直接访问基类中的公有成员,派生类的成员函数可以直接访问基类中的公有成员和保护成员。 二、私有继承(private) ...

xuxiao_0606的博客 1412

C++类继承方式:公有、保护、私有

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。 2. 私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被

tiantiananan的专栏 925

C++类中的三大继承方式:公有继承、私有继承、保护继承

在c++的继承控制中,有三种不同的控制权限,分别是public、protected和private。定义派生类时,若不显示加上这三个关键字,就会使用默认的方式,用struct定义的类是默认public继承,class定义的类是默认private继承。这和Java有很大的不同,Java默认使用public继承,而且只有公有继承。 1.使用public继承时,派生类内部可以访问基类中p...

ChurinZHU的博客 2302

公有继承,私有继承,和保护继承

  1.   公有继承(public)     公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。         2.   私有继承(private)     私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。         3.   保护继承(protected)     保护继承的

fengsanshao的专栏 9644

深度解析 C++ 公有继承、保护继承、私有继承的区别

公有继承是最常见的继承方式。当使用公有继承时,基类的公有成员(public members)在派生类中仍然是公有成员,基类的保护成员(protected members)在派生类中仍然是保护成员,而基类的私有成员(private members)在派生类中不可直接访问,但可以通过基类提供的公有或保护接口间接访问。在保护继承中,基类的公有成员和保护成员在派生类中都变为保护成员,而基类的私有成员在派生类中同样不可直接访问,只能通过基类的公有或保护接口间接访问。

AC的博客 716

C++的公有、保护、私有继承派生

C++类的成员分为三种属性分别是公有、保护、私有。三种属性控制着成员的访问控制权限。 首先讲公有成员。公有成员是其类对外部的接口,任何外部函数都可以访问公有数据或者函数。 其次是保护成员。保护成员是非派生类的外部函数无法访问保护数据或者函数,对于此类下的派生类可以访问到此类的保护数据或者函数。 最后将私有成员。私有成员只能是类内的函数访问到其私有数据或者函数。 我之所以把它们按照这样的顺序...

yishengguoke的博客 1709

c++——继承

C++继承的介绍

2301_79310249的博客 2760
上一篇: OpenCV读取AVI文件
下一篇: 找出单向链表的倒数第m个元素
蓝天客
博客等级 码龄19年 65粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值