关于VC++
#include<iostream.h>
class liwen
{
private:
int x;
int y;
public:
void output ()
{
cout<<x<<endl<<y<<endl;
}
void init ()
{
x=4;
y=4;
}
void init (int a,int b)
{
x=b;
y=b;
}
};
main()
{
liwen pt;
pt.init(5,5);
pt.init();
pt.output();
}
为什么结果是:4
4
#include<iostream.h>
class liwen
{
private:
int x;
int y;
public:
void output ()
{
cout<<x<<endl<<y<<endl;
}
void init ()
{
x=4;
y=4;
}
void init (int a,int b)
{
x=b;
y=b;
}
};
main()
{
liwen pt;
pt.init(5,5);
// pt.init();
pt.output();
}
而这样结果是:5
5
------解决方案--------------------这是一个很明显的问题阿,你之调用init(5,5)时是将成员变量x和y都赋值为5但是在一中你又调用了init()这里将x和y赋值为4所以此时的x和y为4,但是第二个你去掉init()这次调用了所以x和y为5
------解决方案--------------------前者最后调用无参数init函数,x=4,y=4;赋值都为4,所以输出为4。
后者最后调用带参数的init函数,直接将实参5,5传递给形参,赋值给x,y,所以x,y都为5,输出都为5。
关键看输出前,最后调用的函数,修改了那些值。
------解决方案--------------------pt.init(5,5);
pt.init();
pt.output();
看到第二行这句了吧,这是无参调用,输出的自然还是原来的初始值
pt.init(5,5);
// pt.init();
pt.output();
这次就是实参5了,输出故为5
------解决方案--------------------楼上正解。。。
------解决方案--------------------这算是问题?????????