在下列基类的定义中,有无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;
}
第1题:
下列关于虚函数的描述中,正确的是______ 。
A.虚函数是一个static 类型的成员函数
B.虚函数是一个非成员函数
C.基类中采用virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual 说明
D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
第2题:
下面关于虚函数的描述中,正确的是( )。
A)基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明
B)虚函数是非成员函数
C)虚函数是static类型的成员函数
D)派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型
第3题:
3、下列关于虚函数的描述中,正确的是?
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
第4题:
下列关于虚函数的描述中,正确的是( )。
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
第5题:
下列关于虚函数的描述中,正确的是( )。
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型