为了账号安全,请及时绑定邮箱和手机立即绑定
  • 接口类不用实现,所以没有.cpp文件; 没有构造函数和析构函数 只有纯虚函数
    查看全部
  • 仅含有纯虚函数的类称为接口类: 1、一个类,只含有成员函数,不含有数据成员; 2、并且成员函数都是纯虚函数。
    查看全部
    0 采集 收起 来源:[C++]接口类

    2017-06-18

  • 含有纯虚函数的类叫做抽象类!!!
    查看全部
  • 纯虚函数:virtual XXXXXXX()=0
    查看全部
  • 虚函数产生函数的覆盖(虚函数表记录函数的地址发生变化); 继承关系下,同名函数之间产生隐藏。
    查看全部
  • 动态多态有产生内存泄漏的隐患
    查看全部
  • 宏定义是为了防止重复包含 #ifndef #define #endif
    查看全部
  • RTTI:运行时类型识别 typeid(*obj).name()打印出obj这个指针指向的实际的对象类型 对类型进行比对:if{typeid(*obj)==typeid(Bird)} dynamic_cast< >转换类型,< >中是要转化成为的类型,例如:Bird *bird = dynamic_cast<Bird *>(obj);(obj)转化为Bird * 类型 dynamic_cast用法的注意事项:只能应用于指针和引用之间的转换,即< >中只能是某一类型的指针或者是某一类型的引用;要转换的类型中,必须包含虚函数;转换成功返回子类的地址,失败返回NULL typied的注意事项:type_id 返回一个type_info对象的引用;如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数;只能获取对象的实际类型
    查看全部
    0 采集 收起 来源:[C++]RTTI

    2018-03-22

  • 使用typeid需要#include <typeinfo>,否则报错
    查看全部
    0 采集 收起 来源:巩固练习

    2018-03-22

  • Flyable*p=new Bird(); cout<<typeid(p)<<endl;//打印出class Flyable* cout<<typeid(*p)<<endl;//打印出class Bird
    查看全部
  • RTTI:运行时类型识别 typeid(*obj).name()打印出obj这个指针指向的实际的对象类型 对类型进行比对:if{typeid(*obj)==typeid(Bird)} dynamic_cast< >转换类型,< >中是要转化成为的类型,例如:Bird *bird = dynamic_cast<Bird *>(obj);(obj)转化为Bird * 类型
    查看全部
    0 采集 收起 来源:[C++]RTTI

    2018-03-22

  • 虚析构函数适用场景是:继承关系存在,当使用父类指针指向堆中申请的子类对象,需要销毁子类及父类对象时,通过虚析构函数能使得delete 父类指针之前,执行子类对象的虚析构函数,进而销毁子类对象,达到保护内存的目的。 因此关键点就是父类指针指向堆中申请的子类对象,如果没有使用new申请子类对象,就不需要考虑虚析构函数。
    查看全部
  • 虚函数表指针占据的是每个对象的前四个内存单元 有虚函数时,对象中首先存虚函数表指针,再存数据成员地址,没有虚函数时,首先存的是数据成员的地址。<br> 有虚函数时,先使用指针 p 指向对象,访问的虚函数表指针,(*p)取得的是虚函数表地址,再使 p++ 就指向了数据成员,(*p)就能取得数据成员的值。
    查看全部
  • 覆盖:父类和子类定义了同名虚函数,在子类的虚函数表中,子类的虚函数地址就会把原来的父类的虚函数地址给覆盖了。 隐藏:父类和子类出现了同名函数,父类的同名函数将进行隐藏。
    查看全部
  • try......catch(){}
    查看全部
    0 采集 收起 来源:[C++]异常处理

    2017-06-03

举报

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

微信扫码,参与3人拼团

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

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