返回

我们研究这个this指针到底指向哪里

前端

this指针的指向

首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁。实际上this的最终指向的是那个调用它的对象。

this指针一般常用的有以下几种情况:

  • 成员函数

在成员函数中,this指针指向调用该函数的对象。这意味着您可以使用this指针来访问调用对象的成员变量和成员函数。例如,在下面的代码中,this指针指向调用sayHello()函数的对象person:

class Person {
public:
  void sayHello() {
    std::cout << "Hello, my name is " << name << "!" << std::endl;
  }

private:
  std::string name;
};

int main() {
  Person person;
  person.sayHello();

  return 0;
}
  • 非成员函数

在非成员函数中,this指针指向调用该函数的对象。这意味着您可以使用this指针来访问调用对象的成员变量和成员函数。例如,在下面的代码中,this指针指向调用printName()函数的对象person:

void printName(Person *person) {
  std::cout << "Hello, my name is " << person->name << "!" << std::endl;
}

int main() {
  Person person;
  printName(&person);

  return 0;
}
  • 友元函数

在友元函数中,this指针指向调用该函数的对象。这意味着您可以使用this指针来访问调用对象的成员变量和成员函数。例如,在下面的代码中,this指针指向调用printName()函数的对象person:

class Person {
public:
  friend void printName(Person *person);

private:
  std::string name;
};

void printName(Person *person) {
  std::cout << "Hello, my name is " << person->name << "!" << std::endl;
}

int main() {
  Person person;
  printName(&person);

  return 0;
}

结论

this指针在编程中扮演着非常重要的作用,它允许对象访问自己的成员变量和成员函数。this指针的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁。this指针一般常用的情况有:成员函数、非成员函数和友元函数。