c++为什么需要虚函数表

如题所述

第1个回答  2017-02-25
楼上说的不全吧,只有纯虚类才无法实例化。
至于不能为虚函数,我的理解是:
构造函数是给类初始化调用的,明白点说就是给类中的成员变量赋初始值。
如果构造函数是虚函数,意味着肯能被重载,也就是在子类实例化的时候给父类初始化时是调用子类重载的函数,先不管合不合法,要想初始化父类,就需呀知道父类的成员变量或函数,这样岂不是父类向子类完全暴露了自己的成员?这不合乎数据封装的概念吧。
当然,这只是我个人理解,当然ANSI最新的标准貌似构造函数是可以为虚的,不过对于现在我来看的话,感觉没什么意思。本回答被网友采纳

c中的虚函数有什么作用
c++中的虚函数的作用如下:1、实现多态性,多态性是将接口与实现进行分离。2、实现以共同的方法,但因个体差异而采用不同的策略。3、在有可能成为父类时,虚函数可以被同名子类函数覆盖,安全系数高。4、虚函数的主要作用是对派生类实现动态联编。5、调用的函数在基类中被说明为虚函数,子类中该函数会...

求教,c++中什么时候使用虚函数??
首先你要明白C++为什么要引进虚函数这个机制,虚函数就是在基类中被关键字virtual说明,并在派生类中重新定义的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。从以上的定义来看,需函数简单的说就是为了让基类指针能够指向派生类...

C++中虚函数的作用和虚函数的工作原理
虚函数在C++中实现多态性,主要作用在于实现动态绑定。基类定义虚函数,子类可以重写该函数。当子类重新定义了父类的虚函数后,当父类的指针指向子类对象的地址时,程序根据对象的实际类型动态调用子类的该函数,而不是父类的函数。这种动态调用发生在运行阶段,称为动态联编。非虚函数的静态联编效率更高,...

C++中虚函数的作用是什么?它应该怎么用呢?
C++中虚函数的作用:1、简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。2、实现多态性,多态性是将接口与实现进行分离。3、当基类指针指向一个子类对象,通过这个指针调用子类和基类同名成员函数的时候,基类声明为虚函数就会调子类的这个函数,不声明就会调用基类的。C++中虚函数的用法:1、...

请问高手,C++虚函数表是什么?怎么用啊?
虚函数的定义 虚函数用来表现基类和派生类的成员函数之间的一种关系. 虚函数的定义在基类中进行,在需要定义为虚函数的成员函数的声明前冠以关键字 virtual. 基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义. 在派生类中重新定义时,其函数原型,包括返回类型,函数...

c++的虚函数表有多少个
C++中的虚函数表(v-table)的数量取决于有多少个虚函数。对于一个类(或包含虚函数的类),编译器会为该类创建一个虚函数表。每个具有虚函数的类都会有一个单独的虚函数表。虚函数表是一种数据结构,其中包含指向虚函数的指针列表。每个对象的虚函数表都包含相同数量的指针,数量与类中的虚函数数量...

什么是C++虚函数,虚函数的作用和使用方
1. 在基类用virtual声明成员函数为虚函数。这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便地被调用。在类外定义虚函数时,不必再加virtual。2. 在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。C++...

c++中的虚函数有什么作用?
多态性其实就是一个接口,多种方法,分为静态多态性和动态多态性,函数重载属于静态多态性,在程序编译时就可确定调用哪个函数,其过程称为静态关联或早期关联,静态多态性又称编译时多态性;虚函数属于动态多态性,在程序运行过程中才动态地确定所调用的是那个对象的函数,其过程称为动态关联或滞后关联,...

C++基类的析构函数为何要声明为虚函数
C++语言中,基类的析构函数为何要声明为虚函数?构造函数用于初始化对象,不能声明为虚函数,因为构造函数执行时对象尚未创建完毕,虚函数表不存在。相反,析构函数用于释放对象创建时占用的资源,可以声明为虚函数。通过实例分析,展示基类析构函数声明为虚函数的重要性。定义基类`base`与派生类`derived`。

C++虚函数表的位置——从内存的角度
虚函数表中,每个虚函数对应一个内存地址,编译器根据这些地址来调用正确的函数实现。即使在派生类中增加额外数据,虚函数表的位置和结构依然保持不变。通过C语言模拟,我们可以深入理解这个过程,但更详细的内存分配策略可能需要进一步研究。总的来说,虚函数表的位置和功能对于理解C++的多态性至关重要,但...

相似回答