📅  最后修改于: 2023-12-03 15:14:03.323000             🧑  作者: Mango
在C++中,每个对象都有一个指向自身的指针,这个指针叫做“this”指针。它是一个隐含的指针,在成员函数中可以直接使用,用来指向调用该函数的对象。
在一个成员函数中使用“this”指针,可以用它来访问成员变量和成员函数。例如:
class MyClass {
public:
void print() {
std::cout << "this is object " << this << std::endl;
}
};
MyClass obj;
obj.print();
上面的代码中,我们在MyClass类的print函数中使用了this指针来输出当前对象的地址。
在C++中,this指针是一个常量指针,不能被修改。也就是说,不能将this指针赋值给另一个指针,并修改另一个指针的值。例如:
class MyClass {
public:
void func() {
int* ptr;
ptr = this; //错误!this指针是常量指针,不能被修改。
}
};
静态成员函数没有this指针,因为它们不属于任何对象。因此,在静态成员函数中不能使用this指针。
class MyClass {
public:
static void func() {
//错误!不能使用this指针。
std::cout << "this is " << this << std::endl;
}
};
在构造函数和析构函数中也可以使用this指针。不过需要注意的是,在构造函数中,只能访问类的成员变量,而不能访问成员函数。因为在构造函数中,成员函数还没有被构造出来。
class MyClass {
public:
MyClass() {
std::cout << "this is object " << this << std::endl;
this->value = 0; //正确!访问成员变量。
//this->func(); //错误!不能访问成员函数。
}
~MyClass() {
std::cout << "delete object " << this << std::endl;
}
int value; //成员变量
};
this指针还有其他用途,例如在函数参数中指定默认参数、实现拷贝构造函数和拷贝赋值运算符等。这些用途在此不再详述。
在C++中,this指针是一个隐含的指针,它指向调用该函数的对象。使用this指针可以访问成员变量和成员函数。需要注意的是,this指针是一个常量指针,不能被修改,并且在静态成员函数中不能使用。此外,在构造函数和析构函数中使用this指针也需要注意。