使用VC6打开考生文件夹下的工程test12_3,此工程包含一个test12_3.cpp,其中定义了类Base和类A,类A公有继承 Base,但这两个类的定义都并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义枚举类型变量en,它包含两个枚举符front和back,请在注释“//**1**”之后添加适当的语句。
(2)在类Base中添加常成员虚函数void E()的定义,该函数输出“In Base E!”,请在注释“//**2**”之后添加适当的语句。
(3)在类A中添加常成员虚函数void E()的定义,该函数先调用基类中的虚函数 E()再输出“In AE!”,请在注释“//** 3**”之后添加适当的语句。
(4)完成类A构造函数的定义,请使用参数列表的形式初始化类A的成员,并输出“A constructor.”,请在注释“//** 4**”之后添加适当的语句。
输出结果如下:
Base constructor.
A constructor.
In BaseE!
In AE!
In BaseP!
In A!
1A destructor.
Base destructor.
注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
源程序文件test12_3.cpp清单如下:
#include<iostream .h>
// ** 1 **
class Baseprotected:
int b1;
int b2;
public:
Base();
~Base();
int Getb1()const
return b1;
void Setb1(int x) b1 = x;
int Getb2()const
return b2;
void Setb2(int y)
b2 = y;
void Print()const cout<<"In Base P!"<<end1;
// ** 2 **
;
Base::Base():b1(1),b2(5) cout<<"Base constructor."<<endl;Base::~Base() cout<<"Base destructor."<<endl;class A:public Base protected:
en enA;
public:
A();
~A();
en GetColor()const
return enA;
void SetColor(en color) enA = color;
void InA()cout<<"In A!"<<endl;
// ** 3 ** Base::E();
cout<<"In AE!"<<endl;
;
// ** 4 ** cout<<"A constructor."<<endl;
A::~A() cout<<"A destructor."<<endl;void main() A a1;
a1.E();
cout<<endl;
a1.Print();
a1.InA();
cout<<a1.Getbl()<<endl;
参考答案:
(A)
enum en{front, back};
(B)
virtual void E()Const{cout<<"In BaseE!"<<endl;}
(C)
virtual void E()const
(D)
A::A():enA(front)
解析:主要考查考生对于枚举和虚函数的定义的掌握,注意(1)中枚举类型使用enum关键字定义,它实际上就是一个有名字的常量,定义格式如下:enum枚举名{枚举表},(2)中常成员函数的定义格式中const的位置不能随便改动,因为const关键字是修饰其右侧文字的,(3)中调用基类函数E的方法Base::E()中使用了作用域符。