c++类和对象-继承

article/2025/7/5 15:03:05

参考链接:46 类和对象-继承-继承方式_哔哩哔哩_bilibili

1.概述

作用:提高代码复用率,多个子类和父类有相同之处,又有自己各自的特点。例如基类人有四肢、会走路、说话,不同子类中国人是黑头发,说汉语,欧洲人黄头发,说英语。

2.子类继承属性访问权限

子类会继承父类所有非静态成员属性(包括方法和变量

继承方式:public、protected、private

子类无法访问父类private权限内容(内存模型中其实也被继承了,被编译器隐藏了)

public成员protected成员private成员
public继承public访问权限protected访问权限不可访问
protected继承protected访问权限protected访问权限不可访问
private继承private访问权限private访问权限不可访问

3.构造和析构顺序

先调用父类构造函数,再调用子类构造函数

先调用子类析构函数,再调用父类析构函数

3.1问题

1.子类构造和父类构造函数传参不同,如何激活父类构造函数?

会默认调用父类的默认构造函数,父类不存在默认构造函数需要手动指定调用那个父类构造函数。

#include <iostream>using namespace std;	class Parent {
public:/*Parent() {cout << "Parent constructor called" << endl;}*/Parent(int age) {this->age = age; // 初始化父类成员变量cout << "Parent constructor with age called, age: " << age << endl;}~Parent() {cout << "Parent destructor called" << endl;}int age = 0; // 父类成员变量
};class Child : public Parent {
public://父类没有默认构造函数,需要手动调用父类构造函数Child() : Parent(20){cout << "Child constructor called" << endl;}Child(int age) : Parent(age + 20){this->age = age; // 初始化父类成员变量cout << "Child constructor with age called, age: " << age << endl;}~Child() {cout << "Child destructor called" << endl;}};void test() {Child child(10); // 创建 Child 对象时会调用 Parent 的构造函数
}int main() {test();return 0;
}

输出

4.继承中同名成员处理

1.子类同名变量会直接覆盖父类变量

2.同名成员函数会隐藏父类所有该名字的函数(不会触发重载

3.通过添加父类作用域可以访问父类同名被隐藏的变量和方法

其他

1.子类对象大小为子类所有非静态成员变量大小(包括所有继承自父类的成员变量)


http://www.hkcw.cn/article/flfuwVZhEx.shtml

相关文章

MySQL中的锁

MySQL中有哪些锁? 全局锁(FTWRL) 含义&#xff1a;Flush Table with Read Lock的缩写&#xff0c;它会锁定整个数据库实例&#xff0c;让所有表都处于只读状态。 使用全局锁&#xff0c;要执行的命令: flush tables with read lock 之后&#xff0c;整个数据库就处于只读…

探索 Dify 的工作流:构建智能应用的新范式

目录 前言1. 什么是 Dify 的工作流2. 工作流的核心组成2.1 节点&#xff08;Node&#xff09;2.2 连接线&#xff08;Edge&#xff09;2.3 上下文与变量系统 3. 工作流的典型使用场景3.1 多轮对话与智能客服3.2 文档问答系统3.3 多语言营销文案生成3.4 多模型对比与评估&#x…

分词算法BBPE详解和Qwen的应用

一、TL&#xff1b;DR BPE有什么问题&#xff1a;依旧会遇到OOV问题&#xff0c;并且中文、日文这些大词汇表模型容易出现训练中未出现过的字符Byte-level BPE怎么解决&#xff1a;与BPE一样是高频字节进行合并&#xff0c;但BBPE是以UTF-8编码UTF-8编码字节序列而非字符序列B…

小云天气APP:精准预报,贴心服务

在快节奏的现代生活中&#xff0c;天气变化对我们的日常生活、出行安排以及健康状况都有着重要影响。一款精准、便捷且功能丰富的天气预报应用&#xff0c;无疑是提升生活品质的必备工具。小云天气APP正是这样一款为安卓用户量身定制的天气预报应用&#xff0c;凭借其精准的天气…

阿里云服务器ECS详细购买流程

1、打开云服务器ECS官方页面 打开阿里云服务器ECS页面 点击进入阿里云服务器 2、付费类型选择 阿里云服务器付费类型 3、地域节点 阿里云服务器全球28个地域&#xff0c;中国大陆地域如华北2&#xff08;北京&#xff09;、华东1&#xff08;杭州&#xff09;、华南1&#xf…

FastAPI+Pyomo实现线性回归解决饮食问题

之前在 FastAPI介绍-CSDN博客 中介绍过FastAPI&#xff0c;在 Pyomo中线性规划接口的使用-CSDN博客 中使用Pyomo解决饮食问题&#xff0c;这里将两者组合&#xff0c;即FastAPI在服务器端启动&#xff0c;通过Pyomo实现线性回归&#xff1b;客户端通过浏览器获取饮食的最优解。…

【C++篇】STL适配器(上篇):栈与队列的底层(deque)奥秘

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对C感兴趣的…

leetcode刷题日记——二叉树的层次遍历

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; BFS&#xff0c;利用队列特性完成对树的层次遍历运行如下 int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {if (!root) {*returnSize 0;return NULL;}struct TreeNode* queue[2000];…

【优选算法 | 队列 BFS】构建搜索流程的核心思维

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;双指针滑动窗口二分查找前缀和位运算模拟链表哈希表字符串模拟栈模拟(非单调栈)优先级队列 很多人学 BFS 的时候都知道“用队列”&#xff0c;但为什么一定是队列&#xff1f;它到底在整个搜索流程中起了什么作…

Retrievers检索器+RAG文档助手项目实战

导读&#xff1a;作为企业级应用开发中的关键技术&#xff0c;LangChain检索器&#xff08;Retrievers&#xff09;正成为构建高效RAG系统的核心组件。本文将深入探讨检索器的技术架构与实战应用&#xff0c;帮助开发者掌握这一重要的AI工程技术。 检索器的价值在于提供统一的检…

word中如何快速调整全部表格大小

Step1: 选中一个表格&#xff0c;然后在自动调整选项卡中选择“根据窗口调整表格大小” Step2&#xff1a;选中其他表格 Step3: 按F4即可快速调整

设计模式——中介者设计模式(行为型)

摘要 文章详细介绍了中介者设计模式&#xff0c;这是一种行为型设计模式&#xff0c;通过中介者对象封装多个对象间的交互&#xff0c;降低系统耦合度。文中阐述了其核心角色、优缺点、适用场景&#xff0c;并通过类图、时序图、实现方式、实战示例等多方面进行讲解&#xff0…

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s 2025/6/2 18:15 缘起&#xff1a;有些时候&#xff0c;需要在uboot阶段做一些事情。 于是&#xff0c;希望在荣品的PRO-RK3566开发板的Android13下的uboot启动停下。 1、【原始的LOG&#xff…

汽车安全体系:FuSa、SOTIF、Cybersecurity 从理论到实战

汽车安全&#xff1a;功能安全&#xff08;FuSa&#xff09;、预期功能安全&#xff08;SOTIF&#xff09;与网络安全(Cybersecurity) 从理论到实战的安全体系 引言&#xff1a;自动驾驶浪潮下的安全挑战 随着自动驾驶技术从L2向L4快速演进&#xff0c;汽车安全正从“机械可靠…

学习经验分享【40】目标检测热力图制作

目标检测热力图在学术论文&#xff08;尤其是计算机视觉、深度学习领域&#xff09;中是重要的可视化分析工具和论证辅助手段&#xff0c;可以给论文加分不少。主要作用一是增强论文的可解释性与说服力&#xff1a;论文中常需解释模型 “如何” 或 “为何” 检测到目标&#xf…

C++ 检查一条线是否与圆接触或相交(Check if a line touches or intersects a circle)

给定一个圆的圆心坐标、半径 > 1 的圆心坐标以及一条直线的方程。任务是检查给定的直线是否与圆相交。有三种可能性&#xff1a; 1、线与圆相交。 2、线与圆相切。 3、线在圆外。 注意&#xff1a;直线的一般方程是 a*x b*y c 0&#xff0c;因此输入中只给出常数 a、b、…

判断用户输入昵称是否存在(Python)

一、运行结果 二、源代码 # 创建一个存储昵称的列表&#xff1b; name_list [章鱼, 张愚, 宇文弑]# 循环输入判断用户输入昵称是否存在 while True:# 获取用户输入的昵称&#xff1b;name input(请输入昵称&#xff1a;)# 判断昵称是否存在&#xff1b;if name in name_list…

RAG理论基础总结

目录 概念 流程 文档收集和切割 读取文档 转换文档 写入文档 向量转换和存储 搜索请求构建 向量存储工作原理 向量数据库 文档过滤和检索 检索前 检索 检索后 查询增强和关联 QuestionAnswerAdvisor查询增强 高级RAG架构 自纠错 RAG&#xff08;C-RAG&#xf…

pikachu靶场通关笔记09 XSS关卡05-DOM型XSS-X

目录 一、XSS 二、DOM型XSS 三、源码分析 1、打开DOM-X型XSS关卡 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 五、DOM型XSS与DOM-X型XSS区别 本系列为通过《pikachu靶场通关笔记》的XSS攻击关卡(共10关&#xff09;渗透集合&#xf…

3. TypeScript 中的数据类型

在 TypeScript 中&#xff0c;类型&#xff08;Types&#xff09;允许你定义并强制执行应用中数据的结构。通过使用类型&#xff0c;你可以在编译阶段捕捉错误&#xff0c;而不是等到运行时才发现&#xff0c;从而让代码更加可预测&#xff0c;也更不容易出现 bug。TypeScript …