正是本之间的差:以及这 - >构件VS构件在C++
int MyClass::getId() {
return this->id;
}
此:
int MyClass::getId() {
return id;
}
在C++?
正是本之间的差:以及这 - >构件VS构件在C++
int MyClass::getId() {
return this->id;
}
此:
int MyClass::getId() {
return id;
}
在C++?
第一个示例限制名称“id”查找到类MyClass成员的范围。
第二个例子没有。
这是有区别的,例如, MyClass没有成员“id”,或者如果当前方法有一个局部变量或具有相同名称的参数。
这取决于上下文。示例:
template <typename> struct X { int a; };
int b;
template <typename T> struct Foo : X<T> {
int f() {
return this->a; // OK
// return a; // Error
}
int g() {
// return this->b; // Error
return b; // OK
}
};
假设您的类具有名为id
的成员变量,则没有区别。即使你有一个全局变量id
,成员变量总是优先。
您的下一个问题是: 那么为什么存在this
关键字?
有些情况下你绝对需要它。
一个实例是要的函数返回一个指针/参考(*)到对象本身:
return *this; //reference
return this; //pointer
其他是要将其作为参数传递给函数
some_function(*this); //reference(&) or value, depends on some_function signature
some_function(this); //pointer
它也可以用于this->id
,只是为了易读性,只是为了让下一个人立即阅读代码,知道id是类的组成部分而不是全局的,没有功能优势。
如果您使用调试器,this
也可能是它的一个可检查的变量。
不少现有的帖子。 http://stackoverflow.com/questions/6779645/use-of-this-keyword-in-c – DaveyLaser
六个字符。 –
我不知道要在搜索和自动标题搜索中放什么,谷歌也没有给出任何好的结果 – Accumulator