首页 > 编程语言 >C++学习 第十二天

C++学习 第十二天

时间:2023-04-26 09:46:22浏览次数:39  
标签:第十二天 函数 继承 子类 多态 C++ 学习 父类 重写

今日学习内容 :继承  多态  虚函数和抽象函数  

继承:

优点:可以实现代码复用,节省代码量 分类:单继承 多继承   单继承: 语法: class 子类类名:继承访问修饰符 父类类名 { 成员 }; 父类: 子类:   继承: 继承修饰符: public protected private 当继承修饰是 public时 访问权限是 public protected private 当继承修饰是 protected时 访问权限是 protected private 当继承修饰是private是 访问权限是private 继承过程中 构造函数的使用:子类不会继承构造函数 调用 隐式调用父类构造函数:在程序员没有在子类构造函数中手动调用父类构造函数的时候自动调用父类的无参构造(默认构造)   重定义: 这是父类的Say函数 这是子类的Say函数 子类隐藏从父类继承的Say函数,使用自己的Say函数 重写: 虚函数:父类提供虚函数可以供子类重写 这是子类重写的Move函数 virtual和override可以隐藏 子类重写从父类继承到的函数,实现的是覆盖 重写和重定义的区别:重定义实现的是隐藏 重写实现的是覆盖   多继承: 会出现二义性的问题: 解决放方法是:添加域名   陵形继承: 缺点:资源浪费,二义性不明确 可以借助虚继承解决 二义性不明确的问题 父类 v1 v2 继承q V3 继承v1 v2 这个时候四个类占用的内存空间如下 这就出现了浪费资源的现象 解决浪费资源现象的方法是:虚继承 之后的内存就会节省很多 v1 v2 的内存变为20  v3的内存变为24是因为 virtual占4个内存  

多态:

优点:方便程序员开发 分类:静态多态和动态多态 静态多态: 函数重载 运算符重载 动态多态: 发生前提: 存在继承关系  发生在堆区  父类提供虚函数 子类重写父类的虚函数 定义: 父类指针指向子类类型的对象,调用父类函数,展现子类形态 武器父类 武器子类继承父类  

虚函数和抽象函数

虚函数:虚函数 纯虚函数 纯虚函数语法: viritual 函数返回类型 函数名称(参数列表)=0  抽象类: 形成的场景:一个类中存在虚函数 子类没有重写父类提供的所有纯虚函数 特点:不能实例化对象 子类可以实例化:

标签:第十二天,函数,继承,子类,多态,C++,学习,父类,重写
From: https://www.cnblogs.com/xiangyangzhenshoushi/p/17354690.html

相关文章

  • C++ 学习 第十一天
    今日学习内容:面向对象 面向对象:优势:可以实现数据类型扩展易于理解 呈现形式:类 特性:封装:先将成员绑定为一个整体,再将被绑定成员划分权限,所以在类中,成员和成员直接不遵从代码顺序结构权限:public 公有的:类内可以访问 子类可以访问 类外可以访问privat......
  • 左值、左值表达式、左值引用 C++
     本文topics什么是左值和右值什么是左值表达式、右值表达式引用的分类之前学习Java的时候只记得在赋值表达式左边的就是左值,右边的就是右值。这个说法没有错,但今天又在C++中有学习到了关于左右值得概念,在此梳理了一些这些知识点。左值和右值左值:左值是一个对象或变量,可以代表......
  • python+playwright 学习-56 svg 元素定位
    前言SVG英文全称为ScalablevectorGraphics,意思为可缩放的矢量图,这种元素比较特殊,需要通过​name​()函数来进行定位。svg元素定位如下看到的svg标签,就是svg元素用普通的标签定位,是无法定位的,如xpath的//svg只能通过name()函数来定位//*[name()="svg"]页面上用......
  • C++数据结构(树)
    树是一种递归定义的数据结构,如果树中节点的各子树从左到右是有次序的,不能互换,则称该树为有序树,否则叫无序树。关于树的节点:节点拥有的子树的个数叫做节点的度如果度为0,那么该节点叫做叶节点或终端节点,除了根节点外的分支节点称为内部节点树的度是各节点度的最大值。节点的子......
  • C++ 多线程并发
    C++参考手册-并发支持库《C++ConcurrencyinAction》https://segmentfault.com/a/1190000040628584?utm_source=sf-similar-articlehttps://zhuanlan.zhihu.com/p/547312117bilibiliC++多线程并发基础入门教程1创建线程C++11之前原生不支持多线程,C++11起逐步引......
  • 学习MASA第二天:框架分析
    学习MASA第二天:框架分析今天主要是看了下MASATeam的github,目的是对未来设计开源框架选型。对于目前比较火的国内masaframework。当然是首当其冲是要用一用的。masaframework地址:MASA.Framework构思开源框架可行性方案目前看,用masa.stack有点大,对于我们这种个人项目不......
  • JAVA 基础(学习img)
    Date:2023-04-2418:57:14尚硅谷Java零基础全套视频教程PS:只记重要的,自己不会的P1课程简介P2课程目录P3JAVA学习路线对我重要的step14IDEA安装使用P4谈谈JAVA吹水P5学习路线2023最新Java学习路线学习路线P6计算机硬件P7常见DOS命令P8不同编程语......
  • 用Winsock编写服务端和客户端 (C++)
      在这里先向大家推荐一本不错的入门书籍——《TCPIP网络编程》(尹圣雨著),这本书比较贴近实战,是一本不错的网络编程方向的指导用书。如果需要PDF版本,可以后台私信我! 回归正题,我们欲要使用C++实现一个简易的服务端和客户端控制台程序。代码如下:  服务端:/***************......
  • 算法学习day07哈希表part02-454、383、15、18
    packageLeetCode.hashpart02;importjava.util.HashMap;importjava.util.Map;/***454.四数相加II*给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:*0<=i,j,k,l<n*nums1[i]+nums2[j]+nums......
  • 快速掌握并发编程---深入学习ThreadLocal
    生活中的ThreadLocal考试题只有一套,老师把考试题打印出多份,发给每位考生,然后考生各自写各自的试卷。考生之间不能相互交头接耳(会当做作弊)。各自写出来的答案不会影响他人的分数。注意:考试题、考生、试卷。用代码来实现:publicclassThreadLocalDemo{//线程共享变量localVar......