在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。
下面的实例有助于更好地理解 this 指针的概念:
- #include <iostream>
- using namespace std;
- class Box
- {
- public:
- // 构造函数定义
- Box(double l=2.0, double b=2.0, double h=2.0)
- {
- cout <<"Constructor called." << endl;
- length = l;
- breadth = b;
- height = h;
- }
- double Volume()
- {
- return length * breadth * height;
- }
- int compare(Box box)
- {
- return this->Volume() > box.Volume();
- }
- private:
- double length; // Length of a box
- double breadth; // Breadth of a box
- double height; // Height of a box
- };
- int main(void)
- {
- Box Box1(3.3, 1.2, 1.5); // Declare box1
- Box Box2(8.5, 6.0, 2.0); // Declare box2
- if(Box1.compare(Box2))
- {
- cout << "Box2 is smaller than Box1" <<endl;
- }
- else
- {
- cout << "Box2 is equal to or larger than Box1" <<endl;
- }
- return 0;
- }
当上面的代码被编译和执行时,它会产生下列结果:
- Constructor called.
- Constructor called.
- Box2 is equal to or larger than Box1