c++:面向对象的继承特性

什么是继承

(1)继承是C++源生支持的一种语法特性,是C++面向对象的一种表现
(2)继承特性可以让派生类“瞬间”拥有基类的所有(当然还得考虑权限)属性和方法
(3)继承特性本质上是为了代码复用
(4)类在C++编译器的内部可以理解为结构体,派生类是由基类成员叠加派生类新成员得到的
派生类又叫子类,基类又叫父类。两种叫法都有人常用,我们后面会混用,锻炼大家瞬间了然的能力

继承中的权限管控

C++类中的访问权限管控回顾
(1)public 类内部可以访问,类的外部可以访问
(2)private 类内部可以访问,类的外部不能访问
(3)protected 类内部可以访问,类的外部不能访问

1、父类的private成员,在三种继承下都会被变成在子类中是比private还可怜的这种成员
2、父类的public成员,在public继承下到子类中还是public,在protected继承下到子类中是protected的,在private继承下到子类中是private的。
3、父类的protected成员,在public继承下到子类中是protected的,在protected继承下到子类中是protected的,在private继承下到子类中是private的。
4、private:如果是父类中的private权限成员,那么在继承时会被降到比private还惨的这种;而如果是private继承,则不会导致父类中public和protected的成员降权到比private还惨的这种,只会降级到private权限。
5、在继承中父类中所有的成员(不管哪种权限)都会被继承给子类,而不会丢失任何一个。

派生类和基类的构造析构关系

派生类并不继承基类的构造和析构函数,只继承成员变量和普通成员方法

派生类的构造函数一定会调用基类的构造函数,析构也一样

#include <iostream>// 基类
class Animal {
public:// 带参数的基类构造函数Animal(const std::string& name) : name_(name) {std::cout << "Animal constructor called for " << name_ << std::endl;}// 基类析构函数virtual ~Animal() {std::cout << "Animal destructor called for " << name_ << std::endl;}private:std::string name_;
};// 派生类
class Pigeon : public Animal {
public:// 带参数的派生类构造函数Pigeon(const std::string& name, int age) : Animal(name), age_(age) {std::cout << "Pigeon constructor called for " << name << " aged " << age_ << std::endl;}// 派生类析构函数~Pigeon() {std::cout << "Pigeon destructor called for age " << age_ << std::endl;}private:int age_;
};int main() {Pigeon p("Polly", 3);return 0;
}

在这里插入图片描述
为什么派生类的构造(析构)必须调用基类的某个构造(析构)
(1)牢记构造函数的2大作用:初始化成员,分配动态内存
(2)派生类和基类各自有各自的构造函数和析构函数,所以是各自管理各自的成员初始化,各自分配和释放各自所需的动态内存
(3)继承的语言特性,允许派生类调用基类的构造和析构函数,以管理派生类从基类继承而来的那些成员。
(4)明确:派生类的构造和析构处理的永远是派生类自己的对象,只是派生类对象模板中有一部分是从基类继承而来的而已。

总结:

理解继承是什么
继承时是全部继承方法和属性
方法和属性的权限分三类private、public、protected
继承时会导致方法和属性的权限被改变
理解继承的体系设计原理
理解派生类会怎么样调用基类的构造、析构函数

学习记录,侵权联系删除。
来源:朱老师物联网大课堂

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

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

相关文章

BJT交流分析+共发射极(CE)放大器+单片机的中断系统(中断的产生背景+使用中断重写秒表程序+中断优先级)

2024-7-10&#xff0c;星期三&#xff0c;16:58&#xff0c;天气&#xff1a;阴&#xff0c;心情&#xff1a;晴。今天终于阴天啦&#xff0c;有点风凉快一点了&#xff0c;不然真要受不了了&#xff0c;然后没有什么特殊的事情发生&#xff0c;继续学习啦&#xff0c;加油加油…

yolov5中训练长条型目标召回率低问题

对于长条目标长宽比比较大的目标&#xff0c;如长1000pix,宽度10pix等在训练时masic数据增强图片中会出现有的图片中标签遗失问题&#xff0c;将原来标注好的目标&#xff0c;但是在增强图片中没有标签&#xff0c;就会导致召回率低的问题。 在训练代码中augmentations.py文件…

MATLAB——运算符

文章目录 MATLAB——运算符算数运算符矩阵的算数运算 关系运算逻辑运算符运算优先级 MATLAB——运算符 算数运算符 MATLAB中算数运算符包括加、减、乘、除、点乘、点除等。其运算规则如下表所示&#xff1a; 运算符运算规则ABA与B相加&#xff08;A、B为数值或矩阵&#xff0…

一键安装ros及出现问题的解决方案

wget http://fishros.com/install -O fishros && . fishroscatkin_make时出现报错如下 catkin_make时出现错误提示如下&#xff1a; catkin_make Base path: /home/efsz/zmq_to_ros Source space: /home/efsz/zmq_to_ros/src Build space: /home/efsz/zmq_to_ros/build…

科普文:HTTPS协议

概叙 HTTPS&#xff08;Secure Hypertext Transfer Protocol&#xff09;即安全超文本传输协议&#xff0c;是一个安全通信通道。用于计算机网络的安全通信&#xff0c;已经在互联网得到广泛应用。 HTTPS 是基于 HTTP 的扩展&#xff0c;其相当于 HTTP协议SSL&#xff08;安全套…

0708,LINUX目录相关操作

主要是冷气太足感冒了&#xff0c;加上少吃药抗药性差&#xff0c;全天昏迷&#xff0c;学傻了学傻了 cat t_chdir.c #include <stdio.h> #include <unistd.h> #include <error.h> #include <errno.h> #include <sys/stat.h>int main(int argc…

鲁棒控制器设计方法:systune,hinfsyn,musyn,slTuner

systune和hinfsyn更侧重于基于数学模型的控制器设计&#xff0c;而musyn则特别考虑了系统的不确定性。slTuner则提供了在Simulink环境中进行控制器设计和调整的能力。 指定结构的控制器整定&#xff1a;systune, hinfstruct广义控制对象整定&#xff1a;musyn, mixed musyn, h…

应急响应-ELK日志分析系统

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

2024年PMP考试备考经验分享

PMP是项目管理领域最重要的认证之一,本身是IT行业比较流行的证书&#xff0c;近几年在临床试验领域也渐渐流行起来&#xff0c;是我周围临床项PM几乎人手一个的证书。 考试时间&#xff1a;PMP认证考试形式为180道选择题&#xff0c;考试时间为3小时50分。 考试计划&#xff…

NFS综合项目

现有主机 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 node02 主机提供的NFS…

Spring——自动装配Bean

自动装配是Spring满足bean依赖的一种方式 Spring会在上下文中自动寻找&#xff0c;并自动给bean装配属性 在Spring中有三种装配的方式&#xff1a; 1. 在xml中显示配置 2. 在java中显示配置 3. 隐式的自动装配bean【重要】 测试 记得创建Cat、Dog、People类 public clas…

NI 5G大规模MIMO测试台:将理论变为现实

目录 概览引言MIMO原型验证系统MIMO原型验证系统硬件LabVIEW通信系统设计套件&#xff08;简称LabVIEW Communications&#xff09;CPU开发代码FPGA代码开发硬件和软件紧密集成 LabVIEW Communications MIMO应用框架MIMO应用框架特性单用户MIMO和多用户MIMO基站和移动站天线数量…

常用控件(三)

输入类控件 QLineEditQTextEditQComboBoxQSpinBoxQDateTimeEditQDialQSlider QLineEdit QLineEdit用来表示单行输入框&#xff0c;可以输入一段文本&#xff0c;但是不能换行; 核心属性: 属性说明text输入框中的文本inputMask输入内容格式约束maxLength最大长度frame是否添加边…

推荐算法有哪些?——协同过滤、内容推荐、DNN、FM、DeepFM

推荐算法是机器学习和数据挖掘领域的一个重要研究方向&#xff0c;旨在向用户或群体推荐可能感兴趣的物品或信息。 以下是对您提到的几种推荐算法的详细介绍&#xff1a; 1. 协同过滤&#xff08;Collaborative Filtering&#xff09; 定义&#xff1a;协同过滤是一种基于用…

FOLANNIC FD31 UPS工作原理介绍

1&#xff0e;1简介 FOLANNIC FD31系列UPS系工业级电厂型不间断电源&#xff0c;是为重要负载提供不受电网干扰、稳压、稳频的电力供应的电源设备&#xff0c;在市电掉电后&#xff0c;UPS可给负载继续提供一段时间供电&#xff0c;此系列UPS采用带输出隔离变压器的高频双变换结…

链表---头插法+尾插法

本博客介绍了单链表的实现&#xff0c;以及头插法尾插法的代码实现 1.定义一个结点类 class ListNode{int value;ListNode next;public ListNode(int value) {super();this.value value;}Overridepublic String toString() {return "ListNode{" "value" …

Windows部署MySQL环境

一、下载MySQL数据库 进入官网&#xff1a;https://www.mysql.com 找到红框位置&#xff0c;点击DOWNLOADS页面下翻&#xff0c;找到红框位置并点击进入&#xff08;图片右下方那个&#xff09; 选择红框部分 这里按照红框选择的是离线安装&#xff0c;之间点击download即可&…

【史上最全面ESP32】软件中断与硬件中断

文章目录 前言硬件中断硬件中断概念硬件中断的使用 软件中断软件中断概念软件中断的使用 总结 前言 ESP32是一款高度集成的芯片&#xff0c;具有强大的中断处理能力。在ESP32中&#xff0c;我们可以配置所有的GPIO引脚作为硬件中断源&#xff0c;通过附加它们到相应的中断服务…

JFlash读取和烧录加密stm32程序

JFlash读取和烧录加密stm32程序 安装后JFlash所在的目录&#xff1a;C:\Program Files\SEGGER\JLink 一、烧写加密程序 1、打开C:\Program Files\SEGGER\JLink目录&#xff0c;找到JFlash.exe,双击它&#xff0c;就可以打开该执行程序。见下图&#xff1a; 2、选择“Create …

代码随想录算法训练营第三十天 | 01背包问题 二维 01背包问题 一维 416. 分割等和子集

46. 携带研究材料&#xff08;第六期模拟笔试&#xff09; 题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和…