c++ 虚函数与多态性 疑难知识点总结 期末复习

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. 抽象类派生出新类后,如果派生类给出所有纯虚函数的实现,则这个派生类不再是抽象类;否在,派生类仍然是抽象类,这样的派生类也是不能产生对象的。   

猜你喜欢

转载自blog.csdn.net/sdz20172133/article/details/80773628