#include<iostream.h>class Point
{
public:
int x;
int y;
Point()
{
x=0;
y=0;
}
Point(int a,int b)
{
x=a;
y=b;
}
~Point()
{
}
void output()
{
cout<<x<<endl<<y<<endl;
}
void output(int a,int b)        --------------------1
{
x=a;
y=b;                 
}
};
void main()
{
Point pt(3,3);
pt.output(5,5);
    Point pt4(7,3);
pt.output();}
为什么 1 换成   void output(int x,int y)
                  {  x=x;
                     y=y;                 
                           }                 结果就不一样呢?

解决方案 »

  1.   

    变量同名覆盖 。
    使用this->x=x;
    this->y=y;
      

  2.   

    void output(int x,int y) 
    {  x=x; 
       y=y;                
    } 像遇到这种特殊的情况,通常编译器是会提醒的。
    当然如果你不修改的话,编译器一般都是采用就近原则.
    x=x;
    y=y;
    获取的就是最近的int x, int y;
    而且你定义这样写代码的话有歧义.很容易混淆.一般不建议你这样写.
    void output(int a,int b)

    x=a; 
    y=b;                
    }
    这里x,y 最近的话需要找到class的int x, int y.而且这样定义也不会有歧义.
      

  3.   

    C++的 问题发到java板块了。