为了账号安全,请及时绑定邮箱和手机立即绑定
  • 函数是一段二进制代码,通过指针指向这段代码的开头,就会一直执行直到函数结尾,并且通过指令返回。<br> 函数指针与普通指针本质上一样,由4个基本内存单元组成,存储着一个内存的地址,这个内存的地址就是这个函数的首地址 当子类没有定义和父类同名的虚函数的时候,也就是子类继承父类的虚函数的时候,虚函数表中的函数指针的地址是相同的,也就是都指向同一个函数,即父类的那个虚函数,如果子类定义了和父类同名的虚函数,子类虚函数表中的函数指针的地址和父类虚函数表中的函数指针的地址是不同的,也就是将会调用不同的函数。 虚函数表会与类的定义同时出现,函数的调用是通过虚函数表指针指向虚函数表,然后偏移,指向虚函数表中的函数指针,这个函数指针指向了函数的入口地址,于是就通过虚函数指针访问到了函数,当用父类的指针指向子类的对象的时候,就会通过子类的虚函数表指针找到子类的虚函数表,然后偏移,然后找到子类虚函数表中的函数指针,这个指针又指向函数的入口,就会调用到子类的函数。 覆盖:子类没有定义和父类同名的虚函数即继承父类的虚函数时,子类的虚函数表中的函数指针指向父类的虚函数即该指针存储的是父类虚函数的入口地址;但是如果子类定义了和父类同名的虚函数时,子类的虚函数表中的函数指针指向子类的虚函数即该指针存储的是子类自身虚函数的入口地址,也就是子类的虚函数指针中存储的那个子类虚函数地址会覆盖掉父类的虚函数入口地址,覆盖是改变,也就是子类的虚函数表中的函数指针存储的地址会被覆盖为子类的成员函数入口地址。
    查看全部
  • 虚函数特性可以被继承,当子类中定义的函数与父类中虚函数的声明相同时,该函数也是虚函数(从而能调用子类的成员函数) 虚析构函数是为了避免使用父类指针释放子类对象时造成内存泄露。
    查看全部
    0 采集 收起 来源:练习题

    2015-12-14

  • Shape *shape1 = new Rect(3,5)实际上是创造了子类 Rect 的对象,但却是一个父类的指针指向他,子类继承父类,父类的指针只能访问到父类已有的成员函数而不能访问到子类独有的成员函数,这就是为什么不用虚函数时调用子类成员函数只能调用到父类的成员函数的原因。 虚析构函数是为了避免子类堆中申请的内存在销毁父类指针的时候不能销毁这个堆中的内存产生内存泄露
    查看全部
  • virtual 不能修饰不在类中的函数,不能修饰静态成员函数,不能修饰内联函数(会使计算机忽视 inline 关键字使之变成纯粹的虚函数),不能修饰构造函数。
    查看全部
  • 多态具体到语法中是指,使用父类指针指向子类对象,并可以通过该指针调用子类的方法。
    查看全部
    0 采集 收起 来源:练习题

    2015-12-14

  • 一般把存储器里边的【一个字节】就称为【一个内存单元】,复习一下: int 整形 4字节 short 短整型 2字节 long 长整型 32位电脑:4字节/64位电脑:8字节 【一个字节】占 8位
    查看全部
  • 在父类想要实现多态的成员函数前面加上 virtual,使其成为虚函数,然后在子类的同名函数前也加上 virtual (非必须,系统自动加上),就能用父类指针指向子类对象然后通过指针调用子类自己的成员函数,如果不用虚函数实现动态多态,就会导致子类调用和父类同名的成员函数时调用的是父类的那个成员函数。 因为继承关系中,父类的指针无法调用子类的数据成员和成员函数,只能调用自身的数据成员以及成员函数。
    查看全部
    0 采集 收起 来源:[C++]虚函数

    2015-12-13

  • 多态是不同的对象接收到相同的命令产生不同的动作 面向对象的三大特征:封装,多态,继承
    查看全部
    0 采集 收起 来源:C++多态概述

    2015-12-12

  • 继承关系不是RTTI的充分条件,只是必要条件,所以存在继承关系的类不一定可以用RTTI技术; RTTI的含义是运行时类型识别; RTTI技术可以通过父类指针识别其所指向对象的真实数据类型; 运行时类型别必须建立在虚函数的基础上,否则无需RTTI技术.
    查看全部
    0 采集 收起 来源:练习题

    2015-12-09

  • 只有函数声明没有函数定义的虚函数是纯虚函数; 含有纯虚函数的类叫做抽象类; 不可以使用含有纯虚函数的类实例化对象; 抽象类的子类也可以是抽象类。
    查看全部
    0 采集 收起 来源:练习题

    2015-12-08

  • 可以使用接口类指针指向其子类对象,并调用子类对象中实现的接口类中纯虚函数。 一个类可以继承一个接口类,也可以继承多个接口类。 一个类可以继承接口类的同时也继承非接口类。 接口类中仅有纯虚函数,不能含有其它函数,也不可以含有数据成员。
    查看全部
    0 采集 收起 来源:练习题

    2015-12-08

  • 仅含有纯虚函数的类称为接口类。 接口类也是抽象类 接口类可以被继承,不能实例化 不能使用接口类实例化对象
    查看全部
    0 采集 收起 来源:练习题

    2015-12-08

  • 在C++中多态的实现是通过虚函数表实现的。 当类中仅含有虚析构函数,不含其它虚函数时,也会产生虚函数表。 每个类只有一份虚函数表,所有该类的对象共用同一张虚函数表。 两张虚函数表中的函数指针可能指向同一个函数。
    查看全部
    0 采集 收起 来源:练习题

    2015-12-08

  • 虚函数表指针在对象中所占据的内存位置是前四个,后面才是成员变量的指针
    查看全部
  • 1、虚函数使用virtual关键字定义,但使用virtual关键字时,并非全部是虚函数 2、虚函数特性可以被继承,当子类中定义的函数与父类中虚函数的声明相同时,该函数也是虚函数。 3、虚析构函数是为了避免使用父类指针释放子类对象时造成内存泄露。
    查看全部
    0 采集 收起 来源:练习题

    2015-12-08

举报

0/150
提交
取消
课程须知
本课程是C++初级课程 1、熟练掌握C++语言基础语法
老师告诉你能学到什么?
1、虚函数、虚析构函数、纯虚函数 2、抽象类和接口类 3、运行时类别异常 4、异常处理

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!