类成员函数参数和类成员变量的可见性

痞子三分冷 提交于 2020-02-03 00:10:06

类成员函数参数和类成员变量的可见性

一、如下示例

#include "iostream"

using namespace std;

class point{

public:

 int x;

 int y;

 point() {}

 point(int a,int b){x=a;y=b;}

 void output()

 {

 cout<<x<<endl<<y<<endl;

 }

 void input(int a,int y)

 {

 x=a;

 y=y;

 }

};

int main()

{

point pt(5,5);

pt.input(10,10);

pt.output();

return 1; 

}

二、问题

输出结果为10,5。不是我们10,10,为什么呢?

因为相对局部变量隐藏了外层局部变量的缘故。在

void input(int a,int y)

 {

 x=a;

 y=y;

 }

函数中,类的成员变量y被形参y所屏蔽隐藏,所以实际上是自己给自己赋值。

三、解决方法两个:

1、void input(int a,int b)

 {

 x=a;

 y=b;

 }

2、用this指定

void input(int x,int y)

 {

 this.x=x;

 this.y=y;

 }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!