阅读以下说明和C++代码。 [说明] 类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺(1),修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。 [C++代码] 01 #include

admin2008-04-03  19

问题 阅读以下说明和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)  

选项

答案(1) shares(n) 04代码行修改结果:public: 06代码行修改结果:Stock(int n, double pr=3.5):shares(n){ 10代码行修改结果:~Stock(){} (2)0:0 (3)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
转载请注明原文地址:https://jikaoti.com/ti/TZW7FFFM
0

最新回复(0)