11行:定义一个以SuperClass类为基类的继承类SubClass。
14行:使用初始化成员列表来对SubClass类中的数据成员j赋值(j初始化为0)。SubClass(int j)括号中的j没用到,: j(0)这个j是数据成员j。
(1)___ =j; 应该是this->j = j;
(2)___ getValue() + j; 应该是 SuperClass::getValue() + j;
23 SuperClass s = new SubClass(-3);
应该是
23 SuperClass* s = new SubClass(-3);
程序运行到第15行且尚未执行第15行的语句时成员变量j的值是任意值,因为其未被初始化或赋值。
预期运行结果:
-3 2
你这个程序就算照我那样改了也运行不了,有很多问题:
问题1:
08 virtual iht getValueO { return i; } 这一句可能是你手误吧......
问题2:
抽象基类中没有virtual destructor,这将导致这一句:
delete s;
造成内存泄露,因为只有基类的部分被delete了而SubClass类的部分没有......
问题3:
22 void main(void)
符合标准的编译器不会让这一句编译通过......
11行: 定义子类Subclass,它的父类是Superclass
14行;Subclass()是父类的构造函数(第4行),这里有了参数,所以叫重载
不过有个 ":j(0)"我就搞不懂了
11行:SuperClass 是父类
14行:函数的重载。。。。。