C++之继承关系(易懂篇)

详解c++中的继承关系 1 什么是继承   面向对象的继承关系指类之间的父子关系。用类图表示如下: 2 为什么要有继承?/ 继承的意义?   因为继承是面向对象中代码复用的一种手段。通过继承,可以获取父类的所有功能,也可以在子类中重写父类已有的功能以及添加父类中没有的功能。 3如何理解 子类是特殊的父类?   因为子类不仅继承了父类所有的属性与行为,而且在子类中还可以重写父类已有的功能,以及添加自己的新属性与新方法。这也就是说子类对象可以当作父类对象使用。 4 继承的规则   1) 子类是特殊的父类   ... 阅读详情

C++之继承关系(易懂篇)

继承概述:
C++提供了类继承的方法来扩展和修改类,该方法可以从已有的类中派生出新的类,而派生类继承了原有类的特征(包括方法)。派生类和基类之间的特殊关系是基类C++继承的底层模型。C++有三种继承关系:公有继承;私有继承,和保护继承等。
继承关系是is-a的关系,包括基类(父类)与派生类(子类)的关系,
继承关系可访问的类关系表示如下表格:

公有继承关系,可访问基类的公有成员和保护成员,不能访问私有成员,举例如下:

class father {
public:
	void FathPrints() {
		printf("访问父类1\n");
	}
	int a;
	int b;
private:
	int c;
protected:
	void printsP() {
		printf("访问父类2\n");
	}
};
class child :public father {
public:
	void ChildPrints() {
		printf("子类输出1\n");
		printsP();//子类能访问父类的protected成员变量和函数
	}
	//int a;
private:	
	int b;
};
    int main()
    {
    	child c;
    	c.FathPrints();//共有继承,可访问父类
    	c.ChildPrints();
    	//c.printsP();//不能访问
    	system("pause");
    	return 0;
    }

输出结果如下:

保护继承关系,可访问基类的公有成员和保护成员,不能访问私有成员,举例如下:

class father {
public:
	void FathPrints() {
		printf("访问父类1\n");
	}
	int a;
	int b;
private:
void printsPr() {
		printf("访问父类3\n");
	}
protected:
	void printsP() {
		printf("访问父类2\n");
	}
};
class child :protected father {
public:
	void ChildPrints() {
		printf("子类输出1\n");
		FathPrints();//子类能访问父类的protected成员变量和函数
		printsP();//子类能访问父类的protected成员变量和函数
		//printsPr();//不能访问父类private成员变量和函数
	}
	//int a;
private:	
	int b;
};
int main()
{
	child c;
	//c.FathPrints();//不可访问父类
	c.ChildPrints();
	//c.printsP();//不能访问
	system("pause");
	return 0;
}

输出结果:
在这里插入图片描述
当基类和派生类中,定义相同的成员函数及变量时,其访问方式如下面代码所示;

class father {
public:
	void prints() {
		printf("fa=%d,fb=%d\n", a, b);
	}
	int a;
	int b;
private:	
	int c;
protected:
	void printsP() {
		printf("f3=%d\n", b);
	}
	int f;

};
class child :public father {
public:
	void prints() {
		f = 10;//子类能访问父类的protected成员变量和函数
		printf("ca=%d,f=%d\n", a,f);
		printsP();//子类能访问父类的protected成员变量和函数
	}
	int a;
private:	
	int b;
};
class other_ {
public:
	father fath;
	void oprints() {
		printf("oa=%d,ob=%d",oa,ob);
		fath.prints();//可访问父类
	}
public:
	int oa;
	int ob;
};
int main()
{
	child c;
	c.father::a = 1;//父类访问方法
	c.father::b = 2;
	c.father::prints();
	c.a = 3;//子类的成员变量,自动覆盖父类成员变量
	c.prints();
	system("pause");
	return 0;
}

思绪不清晰,继续努力

【实战指南】WinPE环境下360系统急救箱的病毒查杀全流程解析 本文详细解析了在WinPE环境下使用360系统急救箱进行病毒查杀的全流程。从制作WinPE启动盘到进入PE环境,再到360急救箱的深度使用和系统修复,提供了实用技巧和常见问题解决方案,帮助用户高效清除顽固病毒。 阅读详情

相关推荐

腾讯云DBA面试(一面)

在第二阶段,根据RM返回的结果,如果涉及分布式事务的所有RM都返回可以提交, 则TM给RM发送commit的命令,每个RM实现自己的提交,同时释放锁和资源,然后RM反馈提交成功, TM完成整个分布式事务;根据事务所处的阶段,可以回滚到具体的版本,实现一致性。1.并发执行的事务,在prepare阶段,redo log先写文件缓存,第一个领头的事务,在等待n个事务后, 在第一个事务去刷写磁盘时,会把同组的其他的事务,也一起刷写到磁盘上,这样就减少了刷盘的次数,降低了磁盘的IOPS。分布式锁是怎么实现的?

u012565458的博客 1977

C++继承关系

C++中继承主要有三种关系:public、protected和private。为了代码复用。 (1)public继承 public继承是一种接口继承,子类可以代替父类完成父类接口所声明的行为。此时子类可以自动转换成为父类的接口,完成接口转换。从语法角度上来说,public继承会保留父类中成员(包括函数和变量等)的可见性不变,也就是说,如果父类中的某个函数是public的,那么在被子类继承后仍然是...

f__yuan的博客 977

VM与欧姆龙PLC通讯设置:Fins TCP/UDP协议实战避坑指南

本文详细解析了VM视觉平台与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战配置与避坑要点。文章对比了Fins TCP与Fins UDP的差异,推荐在多数工业控制场景下优先选用Fins TCP以保证可靠性,并深入讲解了网络设置、寄存器地址映射、轮询优化等核心配置步骤。同时,针对常见的多次触发拍照、数据解析错误等问题提供了具体的解决方案和调试技巧,旨在帮助工程师快速建立稳定高效的通讯连接。

e4f5g6h7的博客 596

c++:继承(超详解)

目录一:什么是继承二:继承的格式继承的总结:二:子类和父类(基类和派生类)1.子类和父类的相互赋值:2.同名的成员变量3.同名成员函数三:子类中默认的成员函数1.构造函数2.析构函数3.拷贝构造4.赋值运算符重载 四:单继承和多继承单继承: 多继承:菱形继承解决方法一:解决方法二:单继承和多继承的总结:定义:继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)

qq_62718027的博客 8万+

蓝牙RSSI定位实战:用Arduino+BLE4.0搭建厘米级室内定位系统(附完整代码)

本文详细介绍了如何利用Arduino和BLE4.0模块构建厘米级精度的蓝牙RSSI室内定位系统。通过硬件选型、系统架构设计、三点定位算法实现及误差补偿技术,实现在商场导览、仓储管理等场景中的高精度定位。附完整代码和实测数据,帮助开发者快速部署商用级解决方案。

peace的博客 898

【Xilinx】如何在petalinux下编译vcu-gst-app以及独立编译vcu-gst-app

Xilinx从2018.1开始,提供了一套基于zcu106的vcu参考设计。里面提供了一套基于GStreamer的程序,即vcu-gst-app。如何脱离petalinux直接编译呢,这里以为例,其他版本也是类似的操作。

王师傅 3041

C++类的继承关系

C++学习路径之类的继承

m0_58495729的博客 1402

记录一次PowerJob使用达梦数据库的配置

记录一次PowerJob使用达梦数据库的配置

早晨阳光一般暖的博客 2160

应用UML进行数据库建模

介绍当需要为软件系统系统提供一种可靠,灵活而又高效的对象持久化方法时,当今的设计师和架构师们面临着众多的选择。从技术的层面上,这个选择往往介于完全面 向对象,对象关系混合,完全关系化和建立在公开或专有文件格式上的常规解决方案之间(如:XML,OLE的结构化存储)。从提供者的层面 上,Oracle, IBM, Microsoft, POET 和其它的公司提供了相似,但是彼此间往往不相容的解决方案。 ...

zhangvalue的博客 4万+

LoRa项目实战:手把手教你为ESP32选配和焊接天线(从PCB到信号测试)

本文详细介绍了为ESP32选配和焊接LoRa天线的全流程,包括天线选型、PCB布局设计、焊接工艺及信号测试。重点解析了PCB板载天线、导线天线和陶瓷贴片天线的适用场景与性能特点,并提供专业的焊接技巧和信号测试方案,帮助开发者优化LoRa模块的无线通信性能。

weixin_30470643的博客 393

基于yolo11的BGA图像目标检测

15.YOLOv8的n/s版本(如YOLOv8n-1280),或通过TensorRT量化压缩模型。3.使用自适应batch_size(如根据GPU显存动态调整),推荐16-32。为采集分辨率整数倍(如原图2592×1944,训练时缩放为640×480),保持宽高比。14.采用余弦退火学习率(cos_lr)和早停(patience=50),防止过拟合。1.模型标注后,少量标注全部人工校验,大量数据抽检,部分人工检验。13.部署模型后持续收集困难样本(如模棱两可的预测结果),定期迭代更新模型。

qq_47798402的博客 1205

004理论篇蓝图与CPP

这一节是相对理论的Part。随便在视频网站或者编程论坛找一个视频教程跟着连线和编译,很容易就可以复现一些操作和关卡,但是知其然不知其所以然并不利于拓展能力。在主播看来,无论是做游戏还是做仿真还是任意的编程任务,思考和设计的时间应该是和编程的权重相当的,当你理解了一个框架的设计思路和实现思路,你才会在在实现自己的功能时下意识知道应该卡卡西哪些内容,下一步应该是什么。首先,如何为一个纯蓝图项目添加cpp类。

iconmzy的博客 703

45.qt quick-qml虚拟软键盘详解(一)

1.qml虚拟键盘介绍 Qt虚拟键盘的主要功能包括: 可定制的键盘布局和风格与动态切换。 带有单词选择的预测性文本输入。 角色预览和替代角色视图。 自动大小写和空格插入。 不同分辨率的可伸缩性。 支持不同的字符集(拉丁,简体/繁体中文,印地语,日语,阿拉伯语,希伯来语,韩语和其他)。 支持大多数常见的输入语言,可以轻松扩展语言支持。 从左到右和从右到左的输入。 硬件键支持2路和5路导航。 手写支持,带有全屏输入的手势。 音频反馈。 跨平台功能。 支持多国语言,高达40多个语言 本

抵抗时间扭曲,坚持做一件有意义的事 3560

C++类继承关系

C++类继承关系问题 在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public继承是最为常用的一种继承关系,代表了接口继承含义,而他们分别具体代表了什么含义呢? 1. public    从语义角度上来说,public继承是一种接口继承,根据面向对象中的关系而言就是,子类可以代替父类完成父类接口所声明的行为,也就是必须符合

wang7890的专栏 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++类继承关系问题

  C++类继承关系问题本文转自:http://www.cppblog.com/chemz/archive/2007/05/31/25189.html    在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public继承是最为常用的一种继承关系,代表了接口继承含义,而他们分别具体代表了什么含义呢?1. public   从语义角度上来说,pub

danieldaniel19851023的专栏 488

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C++ 继承关系

1.继承的概念及定义 1.1继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。 1.2继承定义 1.2.1继承的格式 1.2.2继承关系和访问限定...

lovehang99的博客 4043

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【C++】继承关系总结

C++是面向对象编程,而其主要目的之一便是提供可重用代码,从而提高编程效率。而C++提供了很好便于扩展和修改类的方法 类继承。继承,能够从已有的类派生出新的类,而派生类继承了原有类(基类)的特征,包括方法。恩… 就像孩子继承父亲的基因 虽然长得很像但也不是一模一样。

Begin 819

CPP中的继承关系

//继承的好处:减少代码的重复率 /* * 语法:class 子类 :继承方式 父类 子类 也称为派生类 基类 也称为基类 */ //继承中的对象模型 #include<iostream> using namespace std; class Base { public: int m_A; protected: int m_B; private: int m_C; }; class Son :public Base { public: int m_D; }; void

weixin_51599540的博客 565

C++ 各种继承关系中的虚函数

#C++ 各种继承关系中的虚函数探幽 最近在学习C++,卡在了实现多态的虚函数这里,之后通过阅读博文:C++虚函数表解析和自己的一些实践,有了点初步的理解,如果错误,欢迎指正。 首先建立如图所示的继承关系: 代码如下: class A { public: virtual void speak() { cout << "this is A"<<endl; } }; class B { public: virtual void spea

man_skill的博客 645

Ghidra-Cpp-Class-Analyzer 常见问题解决方案

Ghidra-Cpp-Class-Analyzer 常见问题解决方案 一、项目基础介绍 Ghidra-Cpp-Class-Analyzer 是一个开源项目,旨在为 Ghidra 提供对 C++ 类和运行时类型信息(RTTI)的分析功能。通过该项目,用户可以在 Ghidra 中更好地分析 C++ 程序的结构。该项目主要使用的编程语言是 Java,因为 Ghidra 本身就是使用 Java 开发的。 ...

gitblog_01107的博客 569

C++ 继承关系及其深层含义

1、概述 C++ 中的继承可以是单一继承或者多重继承,每一个继承连接可以是 public,protect 或 private,也可以是 virtual 或 non-virtual。但是这些继承方面的关系是怎么的?选择使用哪一种继承时的标准是什么?我们总是给忽略掉,前面我们整理了一部分 virtual 和 non-virtual 继承注意事项 ,今天在整理另一部分。 2、确定 public 继承是 ...

weixin_39640298的博客 1086

探索CPP-Reflection:C++中的元编程魔法

在C++的世界里,元编程是一种强大的工具,它允许我们在编译时执行计算和生成代码。`CPP-Reflection`是由Austin Brunkhorst创建的一个开源库,它为C++引入了简单而直观的反射机制,使得开发者可以更容易地探索和操作程序的运行时信息。 ## 项目简介 `CPP-Reflection`是一个轻量级的库,它的核心目标是提供一种方式让C++代码能够自我描述,允许你在运行时检查类

gitblog_00084的博客 1107

C++ 模板基础知识——模板的特殊继承关系

模板的继承其实与普通的继承区别不大,但在模板的继承关系中,有一些比较特殊的继承关系。在C++中,本文将重点介绍两种特殊的模板应用方式:奇异的递归模板模式(CRTP)和混入(Mixins)。这些技术在提供编译时多态和代码复用方面具有独特的优势。

慢慢记录,慢慢更新。 1499

JAVA与C++继承关系比较

JAVA与C++继承关系比较 继承在面向对象开发思想中是一个非常重要的概念,它使整个程序架构具有一定的弹性,在程序 中复用一些己经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性。 JAVA: 在Java中使用extends关键字来标识两个类的继承关系,接下来用一段简单的代码测试一下。 class Parent {//父类 Parent() { //构造方法 ...

weixin_41914727的博客 209

CPP基础-三层继承关系

下面是一个包含三层类的C++面向对象编程示例。这个例子展示了继承和多态的应用。

2401_85199775的博客 589

深入探索 C++ 多态 ② - 继承关系

封装,继承,多态是 C++ 的三大特性,其中多态与继承有密切关系。C++ 语言支持三种继承关系:单一继承,多重继承,虚拟继承:图片来源:《多型与虚拟》

wenfh2020的专栏 239
下一篇: python 导入(import)模板、类详解
Goalin0
博客等级 码龄9年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值