转换函数
explicit关键字
主要用于构造函数处,不允许隐式类型转换
规定了不允许进行类型转换
模板
模板特化
指定固定类型
偏特化
模板模板参数
C++11
数量不定的模板参数
auto
自动补齐变量类型
range for
虚函数与虚函数表
vptr 和 vtbl 【虚指针和虚函数表】
- 只要类中含有虚函数,在内存中就会多一个地址。这个地址存放的是虚表的位置,虚指针指向虚表的地址。
- 虚表中存放是虚函数的地址,顺序是按照本身定义的顺序存放的;
- 子类继承父类。会继承所有的虚函数以及虚表;
- 子类继承父类的虚函数,并且重写虚函数的时候,虚表中的虚函数的地址会改变;
编译时候是静态绑定还是动态绑定?
静态绑定:DLL
动态绑定要满足三个条件:
5. 要通过指针p;
6. 指针是向上转型,dynamic_cast; new猪->动物 Animal *p = new Pig;
7. 调用虚函数;
**动态绑定调用的函数不一定,要看指针p指向谁[A,B,C];**静态绑定是要一定要调用某一个地址,没法商量。
多态:类型一样,但是指向的东西不一样;
Dynamic Binding 动态绑定
重载new / delete