C++程序设计语言中虚函数指针和虚函数表的作用?

题目
问答题
C++程序设计语言中虚函数指针和虚函数表的作用?
参考答案和解析
正确答案: C++编译器为每个“内含虚拟函数的类”建立一个虚拟函数表(vtablE.,表中每一个指针元素指向一个虚拟函数的地址,编译器为类加上一个成员变量vptr,vptr是一个指向虚拟函数表的指针。每一个派生类的对象,都有一个vptr,对象调用虚拟函数就是通过vptr找到虚拟函数表,再找到虚拟函数的真正地址。虚拟函数表的内容是依据类中的虚拟函数声明次序一一填入函数指针。派生类继承基类的虚拟函数表,派生类中改写虚拟函数,虚拟函数表中元素所指的函数地址不再是基类的函数地址,而是派生类的函数地址。包含虚拟函数的类通过vptr指针和虚拟函数表可以在程序运行时依据指针实际指向的对象调用对应的虚拟函数,从而实现多态(Polymorphism)。为了达到动态绑定的目的,虚拟函数是了解多态(Polymorphism)以及动态绑定的关键,同时也是了解如何使用MFC的关键。
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

C++语言类体系中,不能被派生类继承的有

A.转换函数

B.构造函数

C.虚函数

D.静态成员函数


正确答案:B
解析:派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。

第2题:

在C++中虚函数帮助实现了类的多态性。()


正确答案:对

第3题:

下列关于虚函数的说明中,正确的是 <br>

A .从虚基类继承的函数都是虚函数 <br>

B .虚函数不得是静态成员函数 <br>

C .只能通过指针或引用调用虚函数 <br>

D .抽象类中的成员函数都是虚函数 <br>


正确答案:B

第4题:

编译时的多态性可以通过使用( )获得。

A.虚函数和指针

B.重载函数

C.虚函数和对象

D.虚函数和引用


正确答案:C
解析:采用一般类型的标示对象操作虚函数时,将采用静态联编方式调用虚函数。

第5题:

下列关于虚函数的描述,错误的是( )。

A.构造函数可以是虚函数

B.析构函数可以是虚函数

C.虚函数必须通过引用或基类的指针实现

D.虚函数的函数名必须与基类中对应的虚函数的函数名完全相同


正确答案:A
解析:构造函数不能是虚函数。

第6题:

C++类体系中,不能被派生继承的有()。

A、转换函数

B、构造函数

C、虚函数

D、静态成员函数


参考答案:C

第7题:

下列有个虚函数说法不正确的有()。

A、虚函数是静态的

B、虚函数声明只能出现在类定义的函数原型声明中

C、一个虚函数无论被公有继承多少次,它仍然保持其虚函数的特性

D、定义了虚函数后,程序中声明的指向基类的指针就可以指向其派生类


参考答案:A

第8题:

在C++语言类体系中,不能被派生类继承的有

A.转换函数

B.构造函数

C.虚函数

D.静态成员函数


正确答案:B

第9题:

多态性指的是

A.以任何方式调用一个虚函数

B.以任何方式调用一个纯虚函数

C.借助于指向对象的基类指针或引用调用一个虚函数

D.借助于指向对象的基类指针或引用调用一个纯虚函数


正确答案:C

第10题:

作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。( )

此题为判断题(对,错)。


正确答案:正确

更多相关问题