-
抽象类:含有纯虚函数的类 纯虚函数: virtual double function() = 0;查看全部
-
virtual关键字使用的限制: 1.不能使用普通的函数,只能是类的成员函数 2.不能使用于静态成员函数 3.不能使用于构造函数 4.不能适用于内联函数查看全部
-
虚析构函数:用于解决 动态多态中 可能存在的内存泄漏问题查看全部
-
动态多态中存在的问题是:内存泄漏查看全部
-
封装:将数据与函数封装到一个类中 继承:继承关系是一种类间的关系(父类---子类; 基类--派生类) 多态:有了封装与继承之后才会有多态查看全部
-
函数重载,在很早的时候(编译的时)就知道具体使用哪个函数,这种称为 “早绑定”或称“静态多态”查看全部
-
覆盖:父类和子类定义了同名虚函数,在子类的虚函数表中,子类的虚函数地址就会把原来的父类的虚函数地址给覆盖了。 隐藏:父类和子类出现了同名函数,父类的同名函数将进行隐藏。查看全部
-
在类中有动态内存(申请到了堆中)时, 一定要记得在基类中的析构函数要是 virtual 的, 否则若只delete 基类指针 ,那么只执行基类的析构函数 . 若基类析构函数加了 virtual 则 先执行 派生类的析构函数(堆中申请的内存被释放掉了,内存泄漏解决), 再执行基类的析构函数. 其实当 delete 派生类指针的时候 ,也是先执行派生类析构函数, 再执行基类析构函数. 但是你用派生类指针接受派生类对象, 那岂不是浪费了多态了嘛! 引用也是类似, 引用的析构函数赶在函数体结束的大括号之前} . 而且virtual 不能修饰 1. 普通函数 2. 构造函数 3. 内联函数(内联不再内联) 4. static 函数 2.查看全部
-
Flyable*p=new Bird(); cout<<typeid(p)<<endl;//打印出Flyable* cout<<typeid(*p)<<endl;//打印出Bird查看全部
-
常见的异常查看全部
-
早绑定(静态多态),晚绑定(动态多态)查看全部
-
RTTI:运行时类型识别 typeid(*obj).name()打印出obj这个指针指向的实际的对象类型 对类型进行比对:if{typeid(*obj)==typeid(Bird)} dynamic_cast< >转换类型,< >中是要转化成为的类型,例如:Bird *bird = dynamic_cast<Bird *>(obj);(obj)转化为Bird * 类型查看全部
-
dynamic_cast注意事项: (1)只能用于指针和引用的转换 (2)要转换的类型中必须包含虚函数 (3)转换成功返回子类地址,失败返回NULL typeid注意事项: (1)type_id返回一个type_info对象的引用 (2)如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数 (3)只能获取对象的实际类型查看全部
-
静态多态 函数名一致 参数不同查看全部
-
C++常见异常查看全部
举报
0/150
提交
取消