问题 问答题

改错题 使用VC6打开考生文件夹下的工程kt14_1,此工程包含一个源程序文件kt14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: A:noparameters B:intparameter A:noparameters B:intparameter C:intparameter 源程序文件kt14_1.cpp清单如下: #include classA { /*****************found*****************/ private: A(){cout<<"A:noparameters\n";} A(inta){cout<<"A:intparameter\n";} }; classB:publicA { public: B(inta){cout<<"B:intparameter\n";} }; /*****************found*****************/ classC:publicB,publicA { public: /*****************found*****************/ C(inta)::B(a){cout<<"C:intparameter\n";} }; voidmain() { Bb(1); Cc(2); }

答案

参考答案:

(A)将private:改为:public: (B)将class C:public B,public A改为:class C:public B (C)将C(int a)::B(a){cout<<"C: int parameter\n"; } 改为:C(int a):B(a){cout<<"C: int parameter\n";}

解析:

(1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用; (2)A已经是B的基类,C公有继承B,A也就成为了C的基类,根据程序的运行结果可知,C是要公有继承B; (3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;

单项选择题
多项选择题