C++基本概念总结——公有继承和私有继承

C++ 继承深度解析:面向对象编程的核心特性 继承是面向对象编程(OOP)中一个重要的机制,它允许一个类(派生类)继承另一个类(基类)的成员(属性和方法)。继承有助于代码复用和逻辑组织,使得程序具有更强的扩展性和可维护性。在 C++ 中,继承遵循"is-a"关系。即:如果类 B 从类 A 继承,那么 B 是 A 的一种特殊类型。例如,Cat类可以继承Animal类,因为猫是动物的一种。继承是 C++ 面向对象编程的基石之一,它提供了代码复用、扩展性和抽象能力。然而,继承并不是一个万能的工具,过度使用继承可能导致设计复杂化、耦合度过高和维护困难。 阅读详情

公有继承也叫“接口继承”,表示的是“是一个”(IsA)的语义。例如“大雁”类派生于“鸟”类,可以描述为“大雁是一种鸟”。

class 大雁 : public 鸟{
};

一般在基类中提供一个纯虚函数作为接口,在派生类中重写该虚函数,就可以实现基于该接口的动态绑定(即多态)。

需要注意,这里的“是”并非“等于”,“是”的含义应该为“属于”,即一种包含关系。因为说“大雁是一种鸟”是成立的,但反过来说“鸟是一种大雁”显然是不成立的。因为正确的逻辑应该是:大雁是属于鸟类的一种。之前有很多纠结于基类和派生类之间如何进行比较的讨论都是没有意义的,因为二者没有可比性,它们并不相等。

 

私有继承也叫“实现继承”,表示的是“有一个”(HasA)的语义。例如上面的“大雁”和“鸟”之间显然不能用私有继承,因为“大雁有一种鸟”在逻辑上是说不通的。但我们可以说“大雁有一双翅膀”。因此:

class 大雁 : private 翅膀{
};

既然是表示“有一个”的关系,因此通常是有私有继承的地方,都可以改为组合关系:

class 大雁{
private:
	翅膀 m_Wings;
};

 

另外 protected 继承没有什么特定的语义,也不会有地方需要用到。

WPF数据可视化:LiveCharts自定义X轴与Y轴的5个实战技巧(附完整代码) 本文详细介绍了在WPF应用中使用LiveCharts进行数据可视化时,自定义X轴与Y轴的5个核心实战技巧。内容涵盖精确控制刻度步距、深度定制视觉样式、实现多轴布局对比、优化显示空间以及构建响应式动态轴,并提供了完整的C#和XAML代码示例,帮助开发者创建专业且用户体验出色的图表。 阅读详情

相关推荐

vTaskStartScheduler()详解

是启动 FreeRTOS 实时内核的“扳机”。在调用它之前,你只是创建了一些任务结构,但它们都处于“待命”状态,系统仍然在按传统的裸机前后台方式运行。调用这个函数后,FreeRTOS 内核会接管系统的控制权,开始根据优先级调度你创建的任务,多任务环境才真正开始。关键点:它没有参数。它的所有行为都由中的配置宏控制。它通常不会返回。一旦调用,除非没有任务可以运行(或者你显式地停止了调度器),否则程序流永远不会回到main()函数中调用它的下一行。是一个没有参数但行为由精密控制的函数。

Shylock_Mister的博客 1592

三种继承的方法:public 继承/private继承/protected继承详解及区别

(1)子类对父类成员的访问权限跟如何继承没有任何关系,“子类可以访问父类的public和protected成员,不可以访问父类的private成员”——这句话对任何一种继承都是成立的。 (2)继承修饰符影响着谁可以知道“继承”这件事。public继承大家都知道,有点像“法定继承人”,因此,任何代码都可以把子类的引用(或指针)直接转换为父类。也因为这个原因,public继承常用来表达设计中所谓的“

System Architect 2万+

Ubuntu20.04实时内核补丁PREEMPT_RT编译与安装全流程解析

本文详细解析了在Ubuntu20.04系统上编译与安装实时内核补丁PREEMPT_RT的全流程。从内核与补丁版本匹配、编译环境准备,到内核配置、编译排错,再到最终安装、验证与进阶优化,提供了手把手的实战指南,旨在帮助机器人、工业控制等对实时性有苛刻要求的开发者构建低延迟、高确定性的Linux系统。

weixin_29213827的博客 186

2.2C++公有继承与私有继承

C++中的公有继承是指一个类可以从另一个类继承公有成员,包括公有成员函数和变量。

小鱼仙倌的博客 969

代码生成 | 安时积分法模型搭建

安时积分法是电池电量计量最基础的方法,今天我们用simulink建模的方式做一个安时积分模型,从而更好地理解安时积分的思想也掌握建模的基础操 ​新建文件 打开MATLAB启动simulink新建一个模型文件 定义变量 和手写代码一样,先定义几个后面要用到的变量,在simulink建模时新建变量用Data Store Memory模块。双击填入要定义的变量名,然后在signal attributes赋初值 如此方法新建四个变量current(电流)初值1000mA、tatol_cap(总容量

ningvay的博客 1万+

手把手教学:利用AutoDL与vLLM快速部署DeepSeek-R1大模型实战指南

本文详细介绍了如何利用AutoDL平台和vLLM框架快速部署DeepSeek-R1大模型的实战指南。从服务器配置、vLLM安装优化到模型部署的两种方案,再到性能调优和生产环境建议,手把手教你高效完成大模型部署。特别针对国内开发者遇到的网络问题提供了稳定解决方案,并分享了显存优化、磁盘清理等实用技巧。

weixin_42531779的博客 327

【C++基础】公有继承,保护继承,私有继承

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

学习笔记 5024

YOLO11优化:特征融合 | 金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块 | 25年7月最新成果

我们提出金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块,通过由粗到细的 token 选择机制和共享注意力参数,在大幅降低计算量的同时保留空间细节。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1062

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

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

4353

赛豆科技 AIVA 汽车智能体架构演进面试题与答案

摘要 赛豆科技AIVA汽车智能体架构从座舱AI演进到整车智能体,最终实现自进化的超级智能体。其核心是"先有AI再有车"的理念,将AI作为产品主轴而非附加功能。架构设计采用端-边-云协同,确保低延迟响应;整车智能体通过Planner、Tool Registry等关键组件实现自主决策;自进化机制结合车端个性化学习和云端群体学习,并设置多重安全验证。多域协作采用分层架构,关键安全功能仍由确定性逻辑控制。该架构实现了从被动响应到主动服务的范式转变,使车辆能够持续进化。

AI天才研究院 121

高通SDX35平台 modem启动异常分析

SDX35 MIFI项目在生产时出现modem反复重启问题。经排查发现是modem在初始化GNSS模块时访问了不存在的硬件地址导致崩溃,原因是产线使用的SDX35 000-AB型号芯片阉割了GNSS功能,而本地测试使用的AA型号支持该功能。解决方案是通过修改modem编译选项,采用高通新提供的genlmm2选项(保留IMS和SMS功能但去除GNSS支持),最终解决了启动异常问题并满足VZW认证需求。

四儿家的小祖宗的博客 273

公有继承/私有继承/保护继承的区别

1.公有继承–public 公有继承时,对基类的公有成员和保护成员的访问属性不变,派生类的新增成员可以访问基类的公有成员和保护成员,但是访问不了基类的私有成员。派生类的对象只能访问派生类的公有成员(包括继承的公有成员),访问不了保护成员和私有成员。 2.保护继承–protected 保护继承中,基类的公有成员和保护成员被派生类继承后变成保护成员,派生类的新增成员可以访问基类的公有成员和保护成员,但是访问不了基类的私有成员。派生类的对象不能访问派生类继承基类的公有成员,保护成员和私有成员,派生类的对象只能访问

qq_34266854的博客 7814

couldn‘t upgrade db schema: insert into ACT_GE_PROPERTY values (‘common.sche[已解决]

启动整合了flowable的项目,初始化时报错。flowable没有自动建表, 原因 测试数据库版本是MySQL5.7。经过查询和尝试,原因是:在这个数据库里面,已经有一个数据库里面有activiti的这些表了,它检索的时候全库检索查到它了,所以flowable不去建表了,但是我们指定的这个schema里卖弄还是空的,所以它报了找不到表。解决方法:mysql的链接上加上参数如下,让本schema成为默认的schema。...

JavaPub 6004

2. C++ 继承

1. 简介 继承 ,表示两个类的关系,即通过已存在的类来创建一个新的类。其中已存在的类称为基类,新创建的类则称为派生类。 注: C++的继承类似于C语言中的结构体与结构体变量的关系:在C语言中,首先建立结构体以及其内部的结构体成员,然后以此结构体作为数据类型定义若干个结构体变量。如此一来,这些结构体变量就都包含了构建的结构体成员。 基类&派生类 由上面的介绍,基本了解了基类与派生类的...

LinuxTaoist的博客 287

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C++ —— 类的继承

C++ —— 类的继承

MaoSiri的博客 1235

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

==继承==机制详解[ C++ ]

C++的三大件:封装,继承,多态。这篇博客我们就来了解一下继承的概念继承是面向对象编程(OOP)中的一个核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。在C++中,继承机制允许代码的重用,提高了程序的可维护性和可扩展性。

Q741_147的博客 2340

c++中关于继承的各种问题

c++中关于继承的各种问题及代码,并非详解。

weixin_58796863的博客 909

图解c++中的继承

在 C++ 中,继承是面向对象编程的一个核心概念,它允许一个类(称为派生类或子类)继承另一个类(称为基类或父类)的成员变量和成员函数。继承机制使得可以重用已有代码,并促进了代码的模块化。通过继承,派生类可以扩展或修改基类的行为。

dabingbigice的博客 533

C++-类-继承和派生1:继承概述

派生类定义格式:Class派生类名继承方式基类名//派生类新增的数据成员和成员函数三种继承方式:public: 公有继承private: 私有继承protected: 保护继承从继承源上分:单继承:指每个派生类只直接继承了一个基类的特征多继承:指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基类的特征。

u013250861的博客 1007

42 C++ - 继承概述

1. 为什么需要继承 网页类 class IndexPage{ public: //网页头部 void Header(){ cout << "网页头部!" << endl; } //网页左侧菜单 void LeftNavigation(){ cout << "左侧导航菜单!" << endl; } //网页主体部分 voi...

阿甘兄 454

【C++私房菜】面向对象中的简单继承

一个派生类对象包含多个组成部分:一个含有派生类自己定义的(非静态)成员的子对象,以及一个与该派生类继承的基类对应的子对象,如果有多个基类,那么这样的子对象也有多个。如果基类对象不是派生类对象的一部分,则它只含有基类定义的成员,而不含有派生类定义的成员。类似的,如果我们将一个派生类对象赋值给一个基类对象,则实际运行的赋值运算符也是基类中定义的那个,该运算符同样只能处理基类自己的成员。表达式的静态类型是编译时总是已知的,它是变量声明时的类型或表达式生成的类型:动态类型则是变量或表达式表示的内存中的对象的类型。

无敌岩雀的博客 1433

c++语法(4) 类的继承和多态

一:继承: 继承:继承该类的属性和方法,则不需要自己再重写代码。继承不会继承析构函数和构造函数,因此也需要自己重写。 c++ 类中的继承有三种形式,公有继承(public),私有继承(private),保护继承(protected).其中使用的最多的是public 公有继承。 派生类的定义格式 class 派生类:继承方式 基类1,...,继承方式 基类n { 派生类增加的成员声...

weixin_42528089的博客 249

C++核心知识(五)—— 继承和派生

当使用虚继承时,虚基类是被共享的,也就是在继承体系中无论被继承多少次,对象内存模型中均只会出现一个虚基类的子对象(这和多继承是完全不同的)。即使共享虚基类,但是必须要有一个类来完成基类的初始化(因为所有的对象都必须被初始化,哪怕是默认的),同时还不能够重复进行初始化,那到底谁应该负责完成初始化呢?C++标准中选择在每一次继承子类中都必须书写初始化语句(因为每一次继承子类可能都会用来定义对象),但是虚基类的初始化是由最后的子类完成,其他的初始化语句都不会调用。

此心光明事上练的博客 3928

C++继承解析

继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段。它允许程序在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,即派新类。继承呈现面向对象程序设计的层次结构,体现了由简单到复杂的认知程序。 在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。 派生类的定义格式 【单继承】 一个子类只有

每天学习一点点,成长一小步 371

C++进阶01 继承与派生

听课笔记简单整理,供小伙伴们参考~🥝🥝

weixin_42789937的博客 1131

【C++】继承

在C++中,继承是一种面向对象编程(OOP)的重要机制,它允许一个类(派生类或子类)继承另一个类(基类或父类)的属性和行为。通过继承,派生类可以复用基类的代码,并且可以在此基础上添加自己的新特性,从而实现代码的复用和扩展一个类B继承来自类A我们一般称呼A类:父类基类B类:子类派生类B继承自AA派生了B可以实现代码复用,减少重复代码的劳动量继承是实现多态的必要条件继承本身就是为了实现多态的,顺便实现了代码复用。

weixin_44029028的博客 319

4.7类和对象-继承

例如,Car 类私有继承 Engine 类,表示汽车有一个发动机,但外界不需要知道汽车是如何使用发动机的细节,并且通过私有继承,Engine 类的成员在 Car 类外部是不可访问的。在这个例子中,Derived 类公有继承了 Base 类,这意味着 Base 类中的 public 成员(baseVar 和 baseFunction)在 Derived 类中仍然是 public 的,可以通过 Derived 类的对象直接访问和调用。当销毁派生类对象时,首先会调用派生类的析构函数,然后再调用基类的析构函数。

wgf350357114的博客 1219
上一篇: C++基本概念总结——const 和 非const
下一篇: C++基本概念总结——引用和指针
林 文
博客等级 码龄18年 14粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值