问题 填空题

在下列基类的定义中,有无virtual修饰use成员函数的结果将不同,其原因是______。 当use( )为虚拟函数时的程序执行结果: sizeof(A)=8 sized(B)=12 sizeof(C)=16 当use( )非虚拟函数时的程序执行结果: sizeof(A)=4 sized(B)=8 sizeof(C)=12 源程序如下: #include<iostream.h> class Grandad { public: Grandad( ):money(10){} int money; virtual void use( ){} }; class Father:public Grandad { public: Father( ):money(100){} int money; void use( ){} }; class Son:public Father { public: Son( ):money(300){} int money; void use( ){} }; void main(void) { Grandad A;Father B;Son C; cout<<"sizeof(A)="<<sizeof(A)<<endl; cout<<"sizeof(B)="<<sizeof(B)<<endl; cout<<"sizeof(C)="<<sizeof(C)<<endl;}

答案

参考答案:采用虚函数的每个派生类都含有一个指向虚函数表的指针,故多4字节。

单项选择题
多项选择题