C++中类成员定义名字查找问题
int height;
class Screen()
{
public:
void fcn(index height)
{
cursor=width*height;//这里的height为什是int height,而不是index height,查找过程不是从里向外吗?哪位高手能详细说一下这个的查找过程。多谢了。还有就是类成员声明的名字查找和类成员定义的名字查找有什么不同的地方??
}
private:
index cursor;
index height,width;
};
[解决办法]
cursor=width*height;这个height调用的是你函数参数中的height,不是你类中数据成员的height,类
中成员函数中变量的查找是先在该函数中进行查找,如果找到了,就不再进行查找,如果找不到,就去类中的
数据成员中查找,如果找到,就不再查找下去,如果找不到就去定义该成员函数的外围和类的外围进行查找,
如果还找不到,就会发生编译错误。
[解决办法]
查找 dummy_fcn 的定义中使用的名字 height 的声明时,编译器首先在该
函数的局部作用域中查找。函数的局部作用域中声明了一个函数形参。dummy_fcn
的函数体中使用的名字 height 指的就是这个形参声明。
在本例中,height 形参屏蔽名为 height 的成员。