填空题

在下列基类的定义中,有无virtual修饰use成员函数的结果将不同,其原因是 【15】 。 当use()为虚拟函数时的程序执行结果: sizeof(A)=8 sizeof(B)=12 sizeof(C)=16 当use()非虚拟函数时的程序执行结果: sizeof(A)=4 sizeof(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)<<end1; cout <<"sizeof(B)="<<sizeof(B)<<end1; cout <<"sizeof(C)="<<sizeof(C)<<end1

【参考答案】

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