试题六
阅读以下说明和C++代码。
[说明]
类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺(1),修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。
[C++代码]
01 #include <iostream>
02 using namespace std;
03 class Stock
04 protected:
05 Stock()shares=0;share_val=0.0;Output();
06 Stock(int n=0,double pr=3.5): (1) //初始化shares值为n
07 share_val=pr;
08 Output();
09 ;
10 void Stock();
11 void Output()cout<<shares <<’:’<<share_val<<end1;
12 public:
13 //成员函数
14 private:
15 //成员变量
16 int shares;
17 double share_val;
18 ;
19
20 void main() //构造三个Stock对象a,b,c
21 Stock a(1);
22 Stock b;
23 Stock c=Stock();
24 //其它代码省略,且代码五输出
25
程序运行后的输出结果为:
1:3.5
(2)
(3)
参考答案:(A) shares(n)
0D代码行修改结果:public:
0F代码行修改结果:Stock(int n, double pr=C.E):shares(n){
A0代码行修改结果:~Stock(){}
(B)0:0
(C)0:0
解析:
[分析]:
根据程序中的注释,要求初始化shars的值为n,因此根据初始化语法应为share(n);第四行定义了构造函数的访问控制为protected,但构造函数应该是公共的,所以第四行应该更改为public:第六行的构造函数定义了默认值,这样构造一个对象的时候可以填写不同参数,但这个构造函数会和stock()的无参构造函数混淆,所以,不能够带有默认值,可以将带有默认参数的构造函数更改为:Stock(int n, double pr=3.5)或者Stock(int n, double pr)。函数的析构函数不能够有任何的返回值,所以第十行应为~Stock(){}:运行程序后,程序的输出结果为:
1:3.5
0:0
0:0