有人可以用C ++来解释什么是“This”运算符

时间:2013-07-31 17:10:50

标签: c++

我知道“this”运算符用于访问调用对象的成员函数,但也可以正常调用它们。那么,“this”运算符的确切用途是什么。

5 个答案:

答案 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;
}