-6

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

4

5 回答 5

10

我不认为这是一个糟糕的问题。他不是在问 this 有什么作用,而是在大多数时候暗示 this 时为什么关键字存在。

这是需要此指针的情况

class Test
{
    int i;

    void Set(int i)
    {
        this->i = i;
    }
};

this 用于在同名的成员变量和函数参数之间进行选择。

当您需要类中对象的地址时,也可以使用它。

void f(Test *p);

class Test
{
    int i;

    void pass()
    {
        f(this);
    }
};
于 2013-07-31T17:16:14.883 回答
1

在 C++中没有调用运算符this- 所有非静态成员函数中都存在一个隐式变量。wherethis是指向当前类实例的指针。

this也是语言中的关键字(换句话说,保留字,不能this用作变量或函数的名称)

this可以用来指代对象。

例如

class A
{
   int x;
   void some_func()
   {
      this->x = 42;
   }
 };

在上述情况下它是多余的,但在某些情况下它是有用的或需要的。

于 2013-07-31T17:13:17.883 回答
1

首先,this不是运算符(运算符有+-等)。它是一个保留关键字,也是一个表达式

this在成员函数中用于引用函数被调用到的对象。你是对的,它不需要引用成员变量或成员函数,但如果你想引用整个对象,它很有用。

于 2013-07-31T17:13:48.937 回答
0

'this' 是指向对象实例的指针

考虑以下场景,其中可以使用它来查看一个好处:

int add(int a, int b){
   return a + b;
}

但是,假设您还有一个名为“b”的数据成员。

return a + b

返回参数的总和

return a + this->b

返回参数 a 和数据成员 b 的总和

于 2013-07-31T17:15:52.273 回答
-1

根据 MSDN:

this指针(非运算符)是只能在类、结构或联合类型的非静态成员函数中访问的指针。它指向调用成员函数的对象。静态成员函数没有 this 指针。

你可以在什么时候使用它,比方说你想做这样的任务:

myClass::myClass(int x) {
     myGlobalVar = this;
     this-> x = x;
}
于 2013-07-31T17:14:14.867 回答