您的位置:首页 > 其它

名字覆盖问题与命名规范

2016-07-09 00:09 218 查看
this ->是可以省略的

为了让代码更简洁,this->是可以省略的。编译器会自己给它加上this->.

class Object
{
public:
int x;
int y;
public:
int Add()
{
return x+y;//相当于this->x+this->y
}
void Test()
{
printf("Sum:%d\n",Add());//相当于this->Add();
}
};


重名问题:就近原则

(1)在成员函数里:当局部变量与成员变量重名时,该变量指向的是局部变量。

class Object
{
public:
int x;
void Test(int x)
{
printf("x=%d\n",x);//最近的:函数内定义的x
}
};


如果要指定成员变量x,则必须加上this->的规定

(2)在成员函数里,当成员变量与全局变量重名时,该变量指向的是成员变量

int x=10;//全局变量
class Object
{
public:
int x;
void Test(int x)
{
printf("x=%d\n",x);//最近的x:成员变量x
}
};


注:如果要指定全局变量x,则必须加上::x

(3)在成员函数与全局函数重名时,默认指成员函数::全局符号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: