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

关于VC++解决思路

2012-05-16 
关于VC++#includeiostream.hclass liwen{private:int xint ypublic:void output (){ coutxendly

关于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
[解决办法]
楼上正解。。。
[解决办法]
这算是问题?????????

热点排行