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

为什么输出结果不对,大家帮忙看看错哪里了!该怎么解决

2012-03-11 
为什么输出结果不对,大家帮忙看看错哪里了!#include iostreamusingnamespacestdclassC0{protected:intm

为什么输出结果不对,大家帮忙看看错哪里了!
#include <iostream>
using   namespace   std;

class   C0
{
protected:
int   m,n;
public:
void   set(int   a,int   b)
{
m=a;
n=b;
}
void   print()
{
cout < < "m= " < <m < < "\tn= " < <n < <endl;
}

};

class   C1:public   C0
{
int   s;
public:
void   set()
{
s=m*n;
}
void   print()
{
cout < <s < <endl;
}
};

int   main()
{
C0   obj;
C1   obj1;
obj.set(4,5);
obj.print();

obj1.set();
obj1.print();

return   0;
}


输出的s很大,怎样让s=20。


[解决办法]
obj1.set(4,5);
obj1.set();
obj1.print();
[解决办法]
obj1.set();调用这个函数时,m,n都没有初始化啊,只是执行了个m*n
建议第一个类的set函数就免了,些个构造函数对mn初始化,然后继承
[解决办法]
Chiyer(星羽) ( ) 信誉:100 Blog 加为好友 2007-6-9 15:34:51 得分: 0

obj1.set(4,5);
obj1.set();
obj1.print();

这个可以运行?


[解决办法]
obj.set(4,5)只是将C0中的m,n初始化,对C1中的m,n没有影响
[解决办法]
int main()
{
C0 obj;
C1 obj1;
obj.set(4,5);
obj.print();

obj1.C0::set(4,5);
obj1.set();
obj1.print();

return 0;
}
C1重载了C0的set函数,需要用C1

热点排行