C++(类继承、虚函数、多重继承)

类继承

        (1)当创建一个类时,不需要重新编写新的成员变量和成员函数,只需要新建的类继承了一个已有的类的成员。已有的类称为基类或父类,新建的类称为派生类或子类。
        (2)一个类可以有多个父类,继承多个父类的特性。
        (3)继承可以实现面向对象代码重用,继承也时实现多态的必要语法。
        (4)继承默认的访问权限时私有的

class 子类名 : 继承权限 父类名, 继承权限 父类名...
{};

继承中构造函数的赋值方法:子类通过参数列表赋值

        如果没有显式的调用父类构造函数,会默认调用父类无参的构造函数

#include <iostream>
using namespace std;
//1.当父类没有显示的定义构造,那么会调用父类默认的构造函数
//2.父类显示的定义了构造,那么会调用父类显示的无参的构造
//3.先创建父类,后创建子类
class Food
{
public:string chips;Food(string chips):chips(chips){cout<<"food create"<<endl;}
};
//添加继承关系:冒号: 继承权限 父类
//kfc:子类  派生类  Food:基类 父类
class KFC : public Food
{string chips;
public://子类的初始化列表中,初始化父类的构造函数KFC(string chips):Food(“aaaa”) ,chips(chips)//匿名对象{// this->chips = chips;cout<<"kfc create"<<endl;}void show(){cout<<"kfc: "<<chips<<endl;}
};
int main()
{KFC kfc("薯条");kfc.show();return 0;
}

子类的初始化列表中可以通过父类的构造函数来初始化父类的成员

         如果父类中没有无参构造函数,子类的初始化列表中必须显式的调用父类带参的构造函数

#include <iostream>
using namespace std;//1.当父类没有显示的定义构造,那么会调用父类默认的构造函数
//2.父类显示的定义了构造,那么会调用父类显示的无参的构造
//3.先创建父类,后创建子类
class Food
{
public:string chips;Food(string chips):chips(chips){cout<<"food create"<<endl;}
};//添加继承关系:冒号: 继承权限 父类
//kfc:子类  派生类  Food:基类 父类
class KFC : public Food
{public://子类的初始化列表中,初始化父类的构造函数KFC(string chips):Food(chips) //匿名对象{// this->chips = chips;cout<<"kfc create"<<endl;}void show(){cout<<"kfc: "<<chips<<endl;}
};
int main()
{KFC kfc("薯条");kfc.show();return 0;
}

继承访问权限的影响 

        (1)public继承 子类继承后的访问权限不变
        (2)protected继承 子类继承后,父类中的public变成protected,其它不变(protected:只有子类可以用),类外不可用
        (2)private继承 子类继承后,父类中的public和protected变成private,其他不变

 继承时的重定义(遮蔽问题)

        如果派生类中的成员(包括成员变量和成员函数)和基类中的成员重名,那么就会遮蔽从基类继承过来的成员。所谓遮蔽,就是在派生类中使用该成员(包括在定义派生类时使用,也包括通过派生类对象访问该成员)时,实际上使用的是派生类新增的成员,而不是从基类继承来的。

基类成员函数和派生类成员函数不构成重载

        基类成员函数和派生类成员函数不会构成重载,如果派生类有同名函数,那么就会遮蔽基类中的所有同名函数,不管它们的参数是否一样。

虚函数(virtual)

重写 overload(重点)

        子类中定义和父类中虚函数同名,同返回值类型,同参数列表的函数

重载、重写、重定义的区别

         

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

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

相关文章

经典面试题收集(持续更新)

有一个月没有关注招聘信息了&#xff0c;我感觉还是要持续关注这些内容才行。要知道自己毕业季时想找什么方向的工作&#xff0c;不是一时半会就能确定的。假如现在就到了秋招的时候&#xff0c;面对如此多的招聘信息&#xff0c;你该如何选择&#xff1f; 针对这个情况&#…

Redis 主从同步 问题

前言 相关系列 《Redis & 目录》《Redis & 主从同步 & 源码》《Redis & 主从同步 & 总结》《Redis & 主从同步 & 问题》 参考文献 《Redis的主从复制和哨兵机制详解》 什么是主从同步&#xff1f; 主从同步是Redis用于提高数据可用/可靠性…

Go 语言解析 yaml 文件的方法

Go 语言没有内置解析 yaml 文件的功能&#xff0c;实现 yaml 的解析可以使用第三方库 gopkg.in/yaml.v2 和 gopkg.in/yaml.v3。 下面以解析 config.yml 文件为例&#xff0c;演示解析代码的过程。 使用 go get gopkg.in/yaml.v3 添加引用。 在 config 目录下&#xff0c;新增…

深度学习基础—循环神经网络(RNN)

引言 从本系列博客开始&#xff0c;我们将来一起学习一下NLP领域的相关基础知识&#xff0c;NLP领域重要的模型是RNN&#xff0c;在此之前&#xff0c;先来了解一些符号的含义。 1.符号定义 &#xff08;1&#xff09;符号定义 假设建立一个能够自动识别句中人名位置的序列模型…

Web测试和APP测试的区别

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 最近听到有些朋友说&#xff0c;移动端要比web端稍微难一些&#xff0c;涉及到的细节笔记要多&#xff0c;有转去做web测试的想法&#xff0c;看看在具体测试的时…

Linux TCP CC状态机

万字详文&#xff1a;TCP 拥塞控制详解 - 知乎bcc/tools/tcpcong.py at master iovisor/bccbcc/tools/tcpcong_example.txt at master iovisor/bcc 1.状态机 2.tcp map 拥塞算法历史 1974年&#xff0c;3次握手被提出&#xff1b;1978年&#xff0c;TCP和IP拆分成TCP/IP&…

如何进行商标注册?

商标注册是一个法律程序&#xff0c;用于保护品牌名称、标志或符号&#xff0c;确保其在商业活动中的独特性和识别度。以下是商标注册的基本流程和注意事项&#xff1a; 商标查询&#xff1a;在提交商标注册申请之前&#xff0c;建议进行商标查询&#xff0c;以了解在先权利情…

视频设备一体化监控运维方案

随着平安城市、雪亮工程等项目建设的号召&#xff0c;视频监控系统的建设如火如荼地开展。无论在公共场所、企业单位、住宅小区、矿山工地还是交通枢纽&#xff0c;视频监控系统已成为保障安全、维护秩序和提升管理效率的重要工具。但由于对视频监控系统中的前端设备&#xff0…

深度数据修复软件哪个好?盘点2024年好用的4个数据恢复工具。

深度数据修复软件可以帮助用户深入存储设备&#xff0c;找回丢失的数据。它们可以有效解决很多场景下的数据丢失问题&#xff0c;如果大家平时会有数据丢失的情况&#xff0c;可以用这几个工具去尝试一些自己进行数据恢复。 1、福昕深度恢复软件 直通车&#xff1a;http://www…

leetcode-73-矩阵置零

题解&#xff1a; 1、初始化变量ls_row与ls_col分别用来存储元素0的所在行与列&#xff1b; 2、获取矩阵的行数M与列数N&#xff1b; 3、遍历矩阵matrix的每一个元素。如果这个元素为0&#xff0c;则将该元素所在行数append到ls_row&#xff0c;所在列append到ls_col。 4、…

什么是 Spring Cloud Bus?我们需要它吗?

在微服务架构中&#xff0c;Spring Cloud 提供了一系列强大的工具和组件来帮助我们构建和管理分布式系统。其中&#xff0c;Spring Cloud Bus 就是一个非常有用的组件&#xff0c;但很多人对它可能还不太了解。那么&#xff0c;什么是 Spring Cloud Bus&#xff1f;我们真的需要…

树莓派基本设置--2. raspi-config工具介绍

raspi-config是树莓派操作系统Raspberry Pi OS中预装的配置工具&#xff1b;raspi-config提供了一种简单便捷的命令行界面来管理树莓派系统的配置&#xff0c;使用户可以轻松地定制和优化其系统设置。 如果使用的是树莓派桌面系统&#xff0c;可以直接在桌面左上角的应用菜单&…

# C#中常见警告类型及处理方法全解

在C#开发过程中&#xff0c;常常会遇到各种各样的警告信息。这些警告虽然不一定会导致程序无法运行&#xff0c;但可能暗示着程序存在潜在的问题或不符合最佳实践。本文将结合多种常见情况&#xff0c;详细介绍如何处理C#中的一些典型警告&#xff0c;帮助开发者更好地理解和应…

五、鸿蒙开发-组件状态管理

提示&#xff1a;本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程课整理 链接指引 > 尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程 文章目录 一、状态管理入门1.1 State1.2 Prop1.3 Link1.4 Provide和Consume 二、状态管理深入2.1 …

21 Docker容器集群网络架构:四、Docker集群网络验证

文章目录 Docker容器集群网络架构:四、Docker集群网络验证4.1 创建网络4.2 查看创建的网络4.2.1 查看节点1创建的网络4.2.2 查看节点2创建的网络4.2.3 查看节点3创建的网络4.3 运行容器并查看4.3.1 运行容器4.3.2 节点1查看4.3.3 节点2查看4.3.4 节点3查看Docker容器集群网络架…

STM32学习笔记-GPIO

参考江科大32单片机学习相关知识 GPIO基本构造 APB2&#xff08;Advanced Peripheral Bus 2&#xff09;是STM32微控制器架构中的一个外设总线&#xff0c;用于连接一些高性能外设&#xff0c;如定时器、USART、ADC和GPIO等。这些外设通常对性能要求较高&#xff0c;需要更快的…

Python import package

python 获取当前目录上一级目录 import sys import os# 获取当前文件所在目录的上一级目录 parent_dir os.path.abspath(os.path.join(os.path.dirname(__file__), ..))# 将上一级目录添加到 sys.path sys.path.append(parent_dir)# 导入上一级目录中的模块或包 import paren…

如何写好prompt以及评测prompt的好坏

引言 在编写Prompt时&#xff0c;目标是明确、具体地指引AI生成符合期望的输出。以下是一些编写和改进Prompt的经验&#xff1a; Prompt书写经验 明确性&#xff1a; 确保你的Prompt清晰、具体。模糊或广泛的描述可能导致不一致的输出。同时尽量避免否定句法。 上下文&#xf…

java陕西民俗网源码(springboot)

项目简介 陕西民俗网实现了以下功能&#xff1a; 中国陕西民俗网的主要使用者分为&#xff1a; 管理员增删改查商品信息和商品信息资料&#xff0c;审核商品信息预订订单&#xff0c;查看订单评价和评分&#xff0c;通过留言功能回复用户提问。 &#x1f495;&#x1f495;作…

【python】OpenCV—WaterShed Algorithm

文章目录 1、功能描述2、代码实现3、完整代码4、效果展示5、涉及到的库函数5.1、cv2.pyrMeanShiftFiltering5.2、cv2.morphologyEx5.3、cv2.distanceTransform5.4、cv2.normalize5.5、cv2.watershed 6、更多例子7、参考 1、功能描述 基于分水岭算法对图片进行分割 分水岭分割…