填空题 阅读以下说明和C++代码,回答问题。
[说明]
已知类SubClass的getSum方法返回其父类成员i与类SubClass成员i的和,类SuperClass中的getSum为纯虚拟函数,程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。
[C++代码]
01 #inclUde<iostream>
02 using namespace std;
03 class SuperClass
04 private:
05 int i;
06 publiC:
07 SuperClass()(i=5;)
08 virtual iht getValueO(return i ;)
09 virtual int getSum()=0;
10 ;
11 class SubClass:public SuperClass
12 int J ;
13 public:
14 SubClass(int j):j(0)
15 (1) =j; //用参数j的值更新数据成员
16 ;
17 int getValue()return j;)
18 int getSum()
19 return (2) getValue()+j;
20
21 ;
22 void main(void)
23 SuperClass s=new SubClass(-3);
24 cout<<s->getValue()<<"";
25 tout<<s->getSum()<<endl;
26 delete s;
27

  • 1、
【正确答案】 1、{{*HTML*}}(1) this->j (2) [*]
错误更正结果为:SuperClass *s=new SubClass(-3);
变量j的值为0
运行结果为-3,2    
【答案解析】[解析] 本题主要考查了C++程序语言中类成员变量的初始化、父类成员方法的调用、对象的构造等。(1)处要求用参数j的值更新数据成员,为避免与同名变量j冲突,应加this前缀,所以(1)处应为“this->j”;(2)处要求调用父类方法getValue(),但为了和子类方法相区别,应加前缀,所以(2)处应为“[*]”。23行中,SuperClass s已经定义了一个对象,后面不能再使用new再分配一个指针。程序运行到第15行之前j的值应为0,最后程序输出的结果应为-3和2。