#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;
} 结果就不一样呢?
{
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;
} 结果就不一样呢?
使用this->x=x;
this->y=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.而且这样定义也不会有歧义.