我知道“this”运算符用于访问调用对象的成员函数,但也可以正常调用它们。那么,“this”运算符的确切用途是什么。
答案 0 :(得分:10)
我认为这不是一个很糟糕的问题。他并不是在问这是什么,而是在大多数情况下暗示关键字存在的原因。
这是一个必要的指针
的情况class Test
{
int i;
void Set(int i)
{
this->i = i;
}
};
用于在成员变量和具有相同名称的函数参数之间进行选择。
当您需要类中对象的地址时,也会使用它。
void f(Test *p);
class Test
{
int i;
void pass()
{
f(this);
}
};
答案 1 :(得分:1)
C ++中没有名为this
的运算符 - 所有非静态成员函数中都存在一个隐式变量。其中this
是指向类的当前实例的指针。
this
也是该语言中的关键字(换言之,保留字,您不能将this
用作变量或函数的名称)
this
可用于引用该对象。
E.g。
class A
{
int x;
void some_func()
{
this->x = 42;
}
};
在上述情况下这是多余的,但有些情况下它是有用的或需要的。
答案 2 :(得分:1)
首先,this
不是运算符(运算符为+
,-
等。它是保留关键字,也是表达式。
this
来引用调用函数的对象。你是对的,不需要引用成员变量或成员函数,但是如果你想引用整个对象,它会很有用。
答案 3 :(得分:0)
'this'是指向对象实例的指针
考虑以下情况,可以使用它来查看一个好处:
int add(int a, int b){
return a + b;
}
但是,假设您还有一个名为“b”的数据成员。
return a + b
返回参数的总和
return a + this->b
返回参数a和数据成员b
的总和答案 4 :(得分:-1)
根据MSDN:
此指针(非运算符)是只能在类,结构或联合类型的非静态成员函数中访问的指针。它指向调用成员函数的对象。静态成员函数没有this指针。
你可以使用它,假设你想要做出如下的任务:
myClass::myClass(int x) {
myGlobalVar = this;
this-> x = x;
}