发布网友 发布时间:2022-03-18 00:38
共2个回答
懂视网 时间:2022-03-18 04:59
虚函数实现了c++的多态的机制,多态就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。
在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。下面来看一段简单的代码。当将基类中的某一成员函数声明为虚函数后,派生类中的同名函数(函数名相同、参数列表完全一致、返回值类型相关)自动成为虚函数。
热心网友 时间:2022-03-18 02:07
对于每一个有虚函数的C++类,编译器为其建立一个虚函数表vtbl。虚函数表中保存是虚函数的地址。编译器为有虚函数的C++类添加一个成员变量。该成员变量是一个指针vtpl,在该类实例化时将其指向该类的虚函数表。当虚函数被调用时,首先跟据vtpl找到vtbl,并找到对应的函数地址,然后调用该函数。 更详细的介绍你可以参考《inside C++ object model》。