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

题目

在下列基类的定义中,有无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字节。
采用虚函数的每个派生类都含有一个指向虚函数表的指针,故多4字节。
更多“在下列基类的定义中,有无virtual修饰use成员函数的结果将不同,其原因是______。 当use( )为虚拟函 ”相关问题
  • 第1题:

    下列关于虚函数的描述中,正确的是______ 。

    A.虚函数是一个static 类型的成员函数

    B.虚函数是一个非成员函数

    C.基类中采用virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual 说明

    D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型


    正确答案:C
    解析:虚函数的相关概念。

  • 第2题:

    下面关于虚函数的描述中,正确的是( )。

    A)基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明

    B)虚函数是非成员函数

    C)虚函数是static类型的成员函数

    D)派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型


    正确答案:A

  • 第3题:

    3、下列关于虚函数的描述中,正确的是?

    A.虚函数是一个static类型的成员函数

    B.虚函数是一个非成员函数

    C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明

    D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型


    基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明

  • 第4题:

    下列关于虚函数的描述中,正确的是( )。

    A.虚函数是一个static类型的成员函数

    B.虚函数是一个非成员函数

    C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明

    D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型


    正确答案:C
    C。【解析】在成员函数声明的前面加上virtual关键字即把该函数声明为虚函数。虚函数可以是另一个类的友元函数,但不是静态成员函数。在派生类中可以重新定义从基类继承下来的虚函数,在派生类中重新定义虚函数时,函数名、形参表和返回值类型必须保持不变。

  • 第5题:

    下列关于虚函数的描述中,正确的是( )。

    A.虚函数是一个static类型的成员函数

    B.虚函数是一个非成员函数

    C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明

    D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型


    正确答案:C