使用VC6打开考生文件夹下的工程test35_1,此工程包含一个源程序文件test35_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
400
40
源程序文件test35_1.cpp清单如下:
#include <iostream.h>
class Student
public:
Student(int xx)x=xx;
virtual float calcTuition();
/***************** found *****************/
private:
int x;
;
float Student::calcTuition()
return float(x’x);
/***************** found *****************/
class GraduateStudent::public Student
public:
/***************** found *****************/
GraduateStudent(int xx) ::Student(xx)
virtual float calcTuition();
;
float GraduateStudent::calcTuition()
return float(x*2);
void main()
Student s(20);
GraduateStudent gs(20);
cout<<s.calcTuition()<<end1;
cout<<gs.calcTuition()<<end1;
参考答案:
(1)错误:private:
正确:protected:
(2)错误:class GraduateStudent::public Student
正确:class GraduateStudent:public Student
(3)错误:GraduateStudent(int XX)::Student(xx){}
正确:GraduateStudent(int xx):Student(xx){}
解析:
(1)本题考查点为派生类对基类成员的访问。派生类中的成员不能访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。
(2)派生类的一般格式“class<派生类名>:<继承方式1><基类名1>,……{<派生类新定义成员>};”,所以应将“::”改为规定的“:”, “::”是作用域运算符,用来标识某个成员属于某个类。
(3)派生类构造函数在类体内定义的一般格式“<派生类名>:<基类名1>(<参数表1>),……{<派生类构造函数体>}”,所以应将“::”改为规定的“:”。