返回
我们研究这个this指针到底指向哪里
前端
2023-09-14 16:32:54
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指针一般常用的情况有:成员函数、非成员函数和友元函数。