1. 只有类的成员函数才能说明为虚函数,因为虚函数仅适合用于有继承关系的类对象,所以普通函数不能说明为虚函数。
2. 虚函数是用关键字virtual修饰的某基类中的protected或public成员函数。它可以在派生类中重新定义,以形成不同版本。即只有保护或公有的成员函数才能声明为虚函数
3. 使用虚函数时,派生类应该从它的基类公有派生
4. 虚函数重载时,要求函数名,返回类型,参数个数,参数类型,顺序都要与基类函数原型完全相同
l 当返回类型不相同,其他完全相同,则报错
l 函数名相同,而参数个数,参数类型,顺序不同,系统视为普通重载,失去虚函数特性
5. 虚函数的声明只能出现在类声明的函数原型的声明中,不能出现在函数体实现的时候。
6.
虚函数不能为友元函数或静态成员函数。
内联成员函数不能声明为虚函数。因为内联函数的执行代码是确定的,不具有多态性的特征。
构造函数不能是虚函数。
析构函数通常声明为虚函数。
7. 通过一个对象名访问虚函数时,只能静态联编,和调用非虚函数一样。
8.
l 若基类A中有析构函数,
l 并且定义了一个指向该基类A的指针变量。
l 指针变量指向派生类B对象
l 当程序用delete运算符通过基类指针删除派生类对象时,
会发生一个情况:
系统会只执行基类的析构函数,而不执行派生类的析构函数。
9.
如果将基类的析构函数声明为虚函数时,由该基类所派生的所有派生类的析构函数也都自动成为虚函数,即使派生类的析构函数与基类的析构函数名字不相同。
10. 抽象类只能作为其他类的基类来使用,不能建立抽象类对象,其纯虚函数的实现由派生
11. 抽象类不能用作参数类型、函数返回类型或显式转换的类型类给出
12. 在抽象类可以定义普通成员函数或虚函数
13. 抽象类派生出新类后,如果派生类给出所有纯虚函数的实现,则这个派生类不再是抽象类;否在,派生类仍然是抽象类,这样的派生类也是不能产生对象的。