读书人

为什么输出结果不对大家帮忙看看错哪

发布时间: 2012-03-11 18:15:39 作者: rapoo

为什么输出结果不对,大家帮忙看看错哪里了!
#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

读书人网 >C++

热点推荐