填空题 使用VC6打开考生文件夹下的工程test29_1,此工程包含一个源程序文件test29_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
A:no parameters
B:int parameter
A:no parameters
B:int parameter
C:int parameter
源程序文件test29_1.cpp清单如下;
#include <iostream.h>
class A

/***************** found *****************/
private:
A() cout<<"A:no parameters/n";
A(int a) cout<<"A: int parameter/n";
;
class B:public A

public:
B(int a)cout<<"B:int Parameter/n";
;
/***************** found *****************/
class C:public B,public A

public:
/***************** found *****************/
C(int a) ::B(a) cout<<"C: int parameter/n"; )
;
void main ( )

B b(1);
C c(2);


  • 1、
【正确答案】 1、{{*HTML*}}
(1)错误:private:
正确:public:
(2)错误:class C:public B,public A
正确:class C:public B
(3)错误: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)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;