使用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>),……{<派生类构造函数体>}”,所以应将“::”改为规定的“:”。