①派生类对象定义出后会先执行父类构造,然后执行子类构造,摧毁时则相反
②简单的多态理解:同一个对象有不同的属性
③静态成员函数无法被声明为虚函数
④当一个成员函数被声明为虚函数后,派生类同名函数都自动成为虚函数.所以在子类声明该虚函数时,可以加也可以不加virtual关键字,加上只是更清晰,在类本身之外对虚函数定义时,不需要指明关键字virtual
⑤每当派生类有某个成员与基类成员同名时,便会遮蔽住基类那份成员,在接下来的调用该成员就不是调用的基类成员,如果还想使用基类那份成员就必须使用::运算符
⑥成员数据如果是个引用就必须在构造函数的成员初始化列表初始化
⑦如果派生类继承了纯虚函数那么这个派生类也会变成抽象类,当决定重写虚函数时,派生类所提供的新定义必须完全符合基类声明的函数原型,但返回值必须完全吻合这一规则例外,当基类的虚拟函数返回某个基类形式(通常是指针或引用)时派生类中同名函数便可以返回该基类所派生出的类型
⑧在基类的构造中,派生类的虚函数一定不会被调用,析构函数也是如此
⑨当我们对基类声明一个实际对象,同时也就配置出足以容纳该对象的内存,如果稍后传入的时派生对象,则没有内存放置派生类中的各个成员
⑩typeid运算符(必须包含typeinfo头文件)该运算符会返回type_info对象,其中储存与类型相关的种种信息,只能查询多态化的类指针和类引用.例:typeid(*this)
①①static_cast<类型> (对象)可将对象类型强制转换
dynamic_cast<类型> (对象)用于将父类对象的指针or引用转换成子类的指针or引用