在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。
下面的实例有助于更好地理解 this 指针的概念:
#include <iostream>
using namespace ::std;
class Box {
private:
double length;
double width;
double height;
public:
Box(double x = 1.0, double y = 1.0, double z = 1.0) {
cout << "Constructor called!" << endl;
length = x;
width = y;
height = z;
}
double volume() {
return length * width * height;
}
int compare(Box box) {
return this->volume() > box.volume(); // this指针
}
};
int main() {
Box box1 = (1.1, 2.2, 3.3);
Box box2 = (1.1, 1.2, 1.3);
if (box1.compare(box2)) {
cout << "Box1 is bigger than Box2!" << endl;
} else {
cout << "Box2 is bigger than Box1!" << endl;
}
return 0;
}
结果:
Constructor called!
Constructor called!
Box1 is bigger than Box2!Process finished with exit code 0
引入指针目的:
当我们调用函数时,实际上是为了代替某个对象调用它。成员函数可以通过一个名为this的额外隐式参数来访问调用它的那个对象,当我们调用一个成员函数时,可以请求该函数的对象地址初始化this。