在下列基类的定义中,有无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;