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