首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于继承的程序的有关问题,是小程序,大家来看下.

2012-03-29 
关于继承的程序的问题,是小程序,大家来看下...#includeiostream.hclassCRoot{public:intsmall//这个是

关于继承的程序的问题,是小程序,大家来看下...
#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覆盖父类方法
};

热点排行