问题 问答题

使用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! 1 A destructor. Base destructor. 注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。 源程序文件test12_3.cpp清单如下: #include<iostream .h> // ** 1 ** class Base { protected: 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; }

答案

参考答案:

解析:(1) enum en{front, back};(2) virtual void E()Const{cout<<"In BaseE!"<<endl;}(3) virtual void E()const(4) A::A():enA(front)主要考查考生对于枚举和虚函数的定义的掌握,注意(1)中枚举类型使用enum关键字定义,它实际上就是一个有名字的常量,定义格式如下:enum枚举名{枚举表},(2)中常成员函数的定义格式中const的位置不能随便改动,因为const关键字是修饰其右侧文字的,(3)中调用基类函数E的方法Base::E()中使用了作用域符。

选择题
选择题