读书人

关于继承的程序的有关问题是小程序

发布时间: 2012-03-29 12:53:13 作者: rapoo

关于继承的程序的问题,是小程序,大家来看下...
#include <iostream.h>
class CRoot
{
public:
int small; //这个是公有数据成员?目的就是派生类可以用;
CRoot(){small=2;}
CRoot(int n){small=n;}
void showsmall(){cout < < "small= " < <small < <endl;}
};
class CDer1:public CRoot
{
public:
CDer1(int m):CRoot(m){}
};
class CDer2:public CRoot
{
public:
int small;
CDer2(int n=0){small=n;}
};
void main()
{
CRoot A; //初始化,A的small=2;
CDer1 B(3); //先调用基类构造函数,small=3;再调用自己的构造函数,还是small=3;
CDer2 C; //先调用基类的构造函数,且用默认的构造函数,small=2;再调用自己的构造函数,small=0;
A.showsmall(); //small=2
B.showsmall(); //small=3
C.showsmall(); //small=? 自己觉得是0,为什么是2呢?
}


帮忙解答一下,谢谢.

[解决办法]
你的C.showsmall()调用的是父类的方法,当然打出来的是父类的small,要打印本身的small你要覆盖父类的showsmall
[解决办法]
class CDer2:public CRoot
{
public:
int small;
CDer2(int n=0){small=n;}
void showsmall(){cout < < "small= " < <small < <endl;}//自定义派生类方法showsmall覆盖父类方法
};

读书人网 >C++

热点推荐