问题 填空题

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

多项选择题
单项选择题 A1/A2型题