继承

定义:被继承的类叫做基类(父类),继承的类叫派生类(子类),在派生类类名后面加

: 继承方式 基类

class CFather{};
class CSon:public CFather{};

父类(基类)与子类(派生类)之间的关系:

把一些功能相似的类,类中公共的成员单独抽离出来,放到一个类中,这个类就是父类

子类如何使用父类对象 :

通过继承关系,子类可以使用父类的成员。如果子类和父类有同名的成员,默认使用子类的成员,如果想要使用父类的成员,需要在成员名前加上类名::用于显式的指定区分,

son.m_a; //子类成员
son.CSon::m_a; //子类成员
son.CFather::m_a; //父类成员

 子类继承父类,相当于将父类的成员包含到自己的类里,所以定义子类对象所占用的空间大小除了子类自身的成员还包括父类的成员。成员在内存空间分布为:先父类成员后子类成员,而每个类中的成员分布与在类中声明的顺序一致。

 

 三种继承方式:

继承方式与访问修饰符一样,都是三种
继承方式:描述了父类的成员在子类中所能使用的范围,即访问控制。继承方式和访问修饰符共同决定了父类成员的访问权限。

继承格式:

class 子类名:继承方式 父类名

class CSonson :public CSon{};

 

private:继承下
父类子类
private:不可访问
protected:private:
public:private:
protected:继承下
父类子类
private:不可访问
protected:protected:
public:protected:
public:继承下
父类子类
private:不可访问
protected:protected:
public:public:

继承下构造析构执行的顺序:

定义子类对象时执行顺序:父构造->子构造->孙构造...| ...孙析构->子析构->父析构。

 构造顺序说明:

在子类创建对象的时候,执行子类的构造函数(注意这里并不是直接先执行父类的构造函数),但要先执行子类的构造的初始化列表,在初始化列表中会默认调用父类的无参构造初始化父类成员,如果父类只有带参数的构造,那么需要在子类的初始化参数列表显示的指定父类的初始化。

析构顺序说明:

子类对象的生命周期结束后,因为是子类所以自动调用子类析构,当析构执行完了,才会回收对象分配的空间,当然这个空间包含创建的父类的成员,那么回收父类成员前,自动调用父类的析构。如果是new出来的子类对象,同理。 

 继承的优点:

多个子类在增加公共方法时,只需要在父类添加一份即可,提高了代码的复用性,扩展性。

 隐藏

定义

隐藏:在继承的条件下,父类和子类中有同名的成员,那他们之间的关系称为隐藏。

如果子类中没有函数,则他会调用父类的函数,但当调用父类和子类的同名成员方法时,他会调用子类中的函数,将传输的参数转换成子类中的函数所需类型,如果转换不了则会报错。父类和子类中,同名的但是参数列表不同的函数,他们之间的关系并不是函数重载的关系,作用域不同,必须使用 类名:: 去区分到底该调用哪个函数。

class CFather {void fun();
};
class CSon :public CFather {void fun(int a); //隐藏关系,自动将父类的成员屏蔽了
};

 注:父类指针不强转,也可以指向子类对象;而子类的指针必须通过强转才能指向父
亲对象。

 父类指针指向子类对象

CFather * p = new CSon;

 优点:统一多种子类类型,提高代码的复用性和扩展性
弊端:只能使用父类的成员,不能使用子类的成员

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bytetrack漏检补齐

bytetrack漏检补齐1.人流慢速运动,跟踪效果比较好,偶尔有漏检,跟踪可以自动补齐。2.快速运动,频繁遮挡,效果可能不好*如果漏检,倒着跟踪,把丢失的检测框拷贝出来,保留进行跟踪。有时…

安装Keycloak并启动服务(macOS)

前提:电脑已经安装Java 17 1、下载Keycloak 2、下载完后解压缩,使用文本编辑器修改配置文件(keycloak/conf/keycloak.conf) # Basic settings for running in production. Change accordingly before deploying the server. # …

汽车动力转向器落锤冲击试验台

落锤冲击试验台主要用于扣件减振量的测试,采用电动锚链提锤结构,控制精度高,定位准确。采用伺服电机减速机驱动,避免提锤加速和到位减速时的冲击,具有多重安全保护功能,防止二次冲击装置。主机框架采用上下…

Linux系统集群部署模块之Keepalived双机热备

目录 概述 一、keepalived安装 二、配置文件 三、 其他配置项说明 四、名词解释 五、高阶使用 1、介绍 2、keepalived主要作用 3、工作在三层、四层和七层原理 4、健康状态检测方式 4.1 HTTP服务状态检测 4.2 TCP端口状态检测(使用TCP端口服务基本上都可…

TDengine 使用最佳实践(1)

目录 数据建模 单列模型 多列模型 分库分表 边界限制 资源规划 CPU 主频 CPU 核数 内存分类 内存计算 CPU 内存比例 磁盘 网络 下一篇 TDengine 使用最佳实践(1) 关于 TDengine TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台&am…

Java行为型模式---责任链模式

责任链模式基础概念责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,其核心思想是将请求的发送者和接收者解耦,使多个对象都有机会处理请求。这些对象连接成一条链,请求沿着链传递,直到有…

嵌入式学习笔记- 结构体名字被赋值时是整体内容赋值

结构体变量名被赋值时,‌不是赋值的地址,而是执行对整个结构体内容的复制(值拷贝)‌直接赋值是成员级复制‌ 当使用 s2 s1; 形式的赋值时(其中 s1 和 s2 是同类型结构体变量),系统会‌逐成员复…

基于UDP/IP网络游戏加速高级拥塞控制算法(示意:一)

/* ███████╗ 基于UDP/IP网络游戏加速高级拥塞控制算法&#xff08;示意&#xff1a;一&#xff09; ███████╗ */#pragma once#include <iostream> #include <vector> #include <deque> #include <cmath> #include <algorithm> …

【YOLOv11-目标检测】06-模型部署(C++)

上一节课,我们学习了模型的预测。那么,如何用C++部署呢? 克隆项目 进入cmd,进入自己的项目文件夹,然后git clone项目: git clone https://github.com/Geekgineer/YOLOs-CPP 进入到YOLOs-CPP文件夹: 配置环境 ONNX Runtime 后续构建项目的时候,会自动下载,因此,我…

【第零章编辑器开发与拓展】

前言&#xff1a;对编辑器拓展与开发可以节省很多时间&#xff0c;提高开发效率&#xff0c;比如技能编辑器&#xff0c;关卡编辑器这种。当然这只是编辑器开发的一些典型应用&#xff0c;它能做不止这些。学习完这个之后&#xff0c;我们可以开发项目需要的工具。我本意在编辑…

使用 mongoimport 导入本地 JSON 文件到 MongoDB 及数据查看指南

在项目中&#xff0c;我们经常需要将本地 JSON 文件批量导入 MongoDB 数据库。本文以 Ubuntu 22.04 环境为例&#xff0c;详细记录了如何安装 mongoimport 工具、正确导入多个 JSON 文件&#xff0c;以及查看导入后的数据。一、环境介绍操作系统&#xff1a;Ubuntu 22.04.5 LTS…

新手向:Python数据处理Excel报表自动化生成与分析

Python实现Excel报表自动化系统全流程指南本文将详细介绍如何使用Python实现一个完整的Excel报表自动化系统&#xff0c;涵盖从数据清洗、分析到可视化报表生成的全流程。本教程面向Python初学者&#xff0c;通过实际案例讲解pandas和openpyxl库的核心用法。系统概述Excel报表自…

【第六节】docker可视化工具portainer安装

该文章参考了这篇文章https://zhuanlan.zhihu.com/p/27740131259portainer是一个基于网页的docker可视化管理工具&#xff0c;试想一下我们怎么登录路由器管理界面的&#xff0c;异曲同工。那么就需要在服务器的docker内安装portainer&#xff0c;然后在我们的开发机或者说工作…

使用 Certbot 申请和自动续签 Let’s Encrypt 的免费 SSL 证书

一. Let’s Encrypt 介绍 Let’s Encrypt 是当前最常用的免费 HTTPS 证书生成工具之一。该服务由非营利组织提供&#xff0c;致力于为全球范围内的网站提供便捷的自动化证书颁发服务。虽然 Let’s Encrypt 证书的有效期只有90天&#xff0c;但是可以自动续期&#xff0c;这使得…

【kubernetes】--controller(DaemonSet)

Kubernetes DaemonSet 控制器详解 它确保集群中所有(或部分)节点上都运行一个 Pod 的副本。当有新节点加入集群时&#xff0c;DaemonSet 会自动在新节点上创建 Pod&#xff1b;当节点从集群中移除时&#xff0c;这些 Pod 也会被垃圾回收。 DaemonSet 的核心特性 每个节点一个 P…

内测分发平台应用的异地容灾和负载均衡处理和实现思路

内测分发平台应用的异地容灾和负载均衡处理和实现思路如下&#xff1a;一、异地容灾1.风险评估和需求分析&#xff1a;对现有的IT基础设施进行全面的风险评估和需求分析&#xff0c;评估潜在风险和灾害的可能性&#xff0c;以及确定业务和数据的关键性。2.设计备份架构&#xf…

【Vue】浏览器缓存 sessionStorage、localStorage、Cookie

嘿&#xff0c;各位 Vue 开发者们&#xff01;今天咱们来好好聊聊浏览器里的三种缓存方式&#xff1a;sessionStorage、localStorage 和 Cookie。在实际开发中&#xff0c;合理运用这些缓存能让我们的应用性能大幅提升&#xff0c;同时避免一些不必要的问题。下面就跟着我的笔记…

c#如何将不同类型的数据存储到一起

在 C# 中&#xff0c;存储不同类型的数据有多种方式&#xff0c;具体选择取决于你的需求&#xff08;类型安全、性能、灵活性等&#xff09;。以下是常见的解决方案及其适用场景&#xff1a;1. 使用 object 类型&#xff08;装箱 / 拆箱&#xff09;将所有数据转换为基类 objec…

超唯美治愈风卡通插画PPT模版

海洋卡通风治愈系PPT模版&#xff0c;儿童可爱治愈可爱PPT模版&#xff0c;治愈风商务通用PPT模版&#xff0c;治愈系课件PPT模版&#xff0c;治愈风插画PPT模版&#xff0c;超唯美治愈风PPT模版&#xff0c;可爱插画治愈系女孩PPT模版 超唯美治愈风卡通插画PPT模版&#xff1a…

el-tooltip 快速滚动的时候出现残影如何解决 vue3

<el-tooltip:disabled"isScrolling" <!-- 新增滚动状态绑定 -->:popper-options"{ modifiers: [{ name: computeStyles, options: { adaptive: false }] }"effect"dark":content"label.name"placement"right-start"…