更多"在下列基类的定义中,有无virtual修饰use成员函数的结果将不同,"的相关试题:
[填空题]在下列基类的定义中,有无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)<
[填空题]在下列基类的定义中,有无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;
[填空题]一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本,此虚函数又称为( )。
[填空题]一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本,此虚函数又称______。
[单项选择]在公有派生时,派生类中定义的成员函数只能访问原基类的( )。
A. 私有成员、保护成员和公有成员
B. 保护成员和私有成员
C. 公有成员和保护成员
D. 公有成员和私有成员
[填空题]派生类中所定义的虚函数的 [12] 不影响对它的动态联编,即基类中已定义的虚函数,其同名函数放在派生类中的 [13] ,都可以实现运行时多态性。
[单项选择]在公有派生的情况下,派生类中定义的成员函数能访问其基类的()。
A. 公有成员和保护成员
B. 公有成员和私有成员
C. 保护成员和私有成员
D. 公有成员、保护成员和私有成员
[填空题]在类的派生过程中,将基类说明为虚基类的方法是在基类的类名前加上关键字()。
[单项选择]当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是( )。
A. 任何
B. 公有或保护
C. 保护或私有
D. 私有
[填空题]基类的 [12] 不能被派生类的成员访问,基类的 [13] 在派生类中的性质和继承的性质一样,而基类的 [14] 在私有继承时在派生类中成为私有成员,在公有和私有保护继承时在派生类中仍为保护成员。
[填空题]带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化 【10】 次。
[单项选择]带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( )。
A. 与虚基类下面的派生类个数有关
B. 多次
C. 两次
D. 一次