C++多态(一)

时间:2021-08-01 04:30:59

面试题目中关于多态的问题不少,例如重载、虚函数(覆盖)、多态的概念等等,这里做一个梳理,包含如下内容:

一、多态的定义

(一)定义

能够呈现不同形态的特性或状态。

(二)两种多态性

1.编译时的多态性编译系统进行编译时在函数调用指令表中找到多个重载的函数中相对应的那个函数,将它们与主程序中调用它们的代码联编(binding),以备主程序运行时正确地调用。

2.运行时的多态性:编译系统进行编译时,根据程序代码内容、根据虚函数地址表中this指针所指向的地址、找到相应的虚函数(覆盖),将它与主程序中调用它的代码联编。

二、函数重载(overloading)

1.普通函数的重载

2.构造函数的重载

3.运算符(函数)重载

三、预定义类型与自定义类型之间的转换

四、所谓动态联编的基本概念 – 虚函数

五、纯虚函数(pure virtual function)和抽象类(abstract class)