首页 > 其他分享 >4月13日继承学习

4月13日继承学习

时间:2023-04-13 23:46:29浏览次数:29  
标签:初始化 13 继承 派生类 学习 作用域 基类 构造函数

之前在c语言写学生管理系统时操作对象只是学生,对学生进行增删查改,若是想要定义老师的结构题又有很大的工作量,但是其中成员变量又有很多重复的,C++的继承可以很好的解决这种问题,继承分为私有保护和公有继承,一般私有继承和保护继承很少用到,所以大多是公有继承派生类分别继承基类的共有在派生类中也是共有,继承的保护在派生类中也是保护,但是继承的私类在派生类中不可见,但是可以用从基类继承到的函数来访问基类中的私有,class默认继承私有struct默认继承公有,

如图基类Person被派生类student公有继承。

一般来说派生类的数据字节数要长一些,而基类的要短一些,所以可以这样理解派生类对象可以赋给基类对象,因为可以充满基类,而反过来不行,积累的数据量太少不能充满派生类,同理派生类可以赋给基类的指针和引用,然而基类的指针可能可以赋给派生类,条件是这个积累的指针本身就指向派生类的对象。

1.继承中的作用域,若派生类中存在与基类的同名变量和函数,则派生类的同名变量会对基类的同名变量进行隐藏若不加作用域限定符只会优先访问派生类的成员变量,小提一下,函数重载只会出现在同一作用域中,这种不是同一作用域的同名函数叫函数的重定义。

初始化列表:有些成员变量在类中声明好后要初始化必须使用初始化列表,例如存在于静态区的常量,和引用,以及没有默认构造函数的自定义类型,因为常量在定义时就必须初始化,引用也必须在定义时有被引用的对象,自定义类型在使用时也必须初始化。

类在实例化时需要调用默认的构造函数,但是继承来的基类中的变量要初始化他用常规的初始化方法肯定是不行的,所以先得在初始化列表时调用基类的构造函数构造好以后再完成派生类的构造

初始化列表基类时使用匿名初始化,可以根据需求灵活调用基类中的各种构造函数,拷贝就用拷贝,重载赋值运算符就用重载赋值运算符,

析构的话是先析构基类再析构派生类,要注意的是派生类的析构函数与积累的析构函数构成隐藏:

标签:初始化,13,继承,派生类,学习,作用域,基类,构造函数
From: https://www.cnblogs.com/qjwxlj/p/17316982.html

相关文章

  • C/C++会员卡计费管理系统[2023-04-13]
    C/C++会员卡计费管理系统[2023-04-13]1.开发一个会员卡计费管理系统。2.新会员登记(将会员个人信息及会员卡信息进行录入);3.会员信息维护、会员等级、不同等级享受折扣信息的维护;4.会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示,此时可以进行续费,续费......
  • HDU 1116 && POJ 1386 Play on Words(欧拉路径)
    按字母来建边,每个单词的首字母和尾字母加边。先判断是否连通,然后判断每个字母的入度和出度不能出现差的绝对值大于2,然后入度和出度差的绝对值为1的不能超过两个。就可以形成欧拉路径代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include......
  • 4.13今日总结
    今天学习了PyQt5的水平排列与垂直排列,学完就tm明年了fromPyQt5.QtCoreimportQtfromPyQt5.QtGuiimportQFontfromPyQt5.QtWidgetsimportQApplication,QWidget,QLabel,QLineEdit,QPushButton,QVBoxLayout,QHBoxLayout,\QMessageBox,QGridLayoutclassLo......
  • 课前准备及4_13
    学习顺序:学习语言(C/C++/JAVA)学习数据结构(DS)学习系统和网络(Linux+系统编程+网络基础+网络编程)struct结构体structBookb1={name,price}switchcase1-7,break......
  • STM32F407学习
    读懂数据手册,根据数据手册实现功能代码固件库点灯main.cvoiddelay(uint32_tcount){ for(;count!=0;count--); }intmain(void){ /*在这里添加自己的程序*/ LED_GPIO_Config(); while(1) { /*流水灯*/ /* GPIO_ResetBits(GPIOF,GPIO_Pin_6); delay(0xffff......
  • 2023.4.13
    1//c++语言程序设计第二章习题2//2-293//在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。4#include<iostream>5usingnamespacestd;6#include<ctime>7intmain()8{9srand((unsignedin......
  • 《Spring揭秘》-第三章- 学习记录
    掌管大局的IoCServiceProvider虽然业务对象可以通过IoC方式声明相应的依赖,但是最终仍然需要通过某种角色或者服务将这些相互依赖的对象绑定到一起,而IoCServiceProvider就对应IoC场景中的这一角色。IoCServiceProvider在这里是一个抽象出来的概念,它可以代指任何将IoC场景中......
  • 第137篇:重学ES6模块化
    好家伙, 我原本以为学完模块化之后,就能非常顺利的完成我的项目分包,然而并没有,这是非常重要的知识,而我没有学好所以我决定重学一遍 本篇为《阮一峰ECMAScript6(ES6)标准入门教程第三版》第23章"Module的语法"学习笔记  1.概述历史上,JavaScript一直没有模块(modu......
  • 使用Pytorch实现强化学习——DQN算法
    使用Pytorch实现强化学习——DQN算法强化学习的主要构成强化学习主要由两部分组成:智能体(agent)和环境(env)。在强化学习过程中,智能体与环境一直在交互。智能体在环境里面获取某个状态后,它会利用该状态输出一个动作(action)。然后这个动作会在环境之中被执行,环境会根据智能体采取的动......
  • 4.13
    在这个神经网络(图3.1.2)对应的3个节点,首先计算第一层网络中的各个节点相关的数......