C++ this 指针


在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。

友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。

下面的实例有助于更好地理解 this 指针的概念:

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Box
  5. {
  6. public:
  7. // 构造函数定义
  8. Box(double l=2.0, double b=2.0, double h=2.0)
  9. {
  10. cout <<"Constructor called." << endl;
  11. length = l;
  12. breadth = b;
  13. height = h;
  14. }
  15. double Volume()
  16. {
  17. return length * breadth * height;
  18. }
  19. int compare(Box box)
  20. {
  21. return this->Volume() > box.Volume();
  22. }
  23. private:
  24. double length; // Length of a box
  25. double breadth; // Breadth of a box
  26. double height; // Height of a box
  27. };
  28.  
  29. int main(void)
  30. {
  31. Box Box1(3.3, 1.2, 1.5); // Declare box1
  32. Box Box2(8.5, 6.0, 2.0); // Declare box2
  33.  
  34. if(Box1.compare(Box2))
  35. {
  36. cout << "Box2 is smaller than Box1" <<endl;
  37. }
  38. else
  39. {
  40. cout << "Box2 is equal to or larger than Box1" <<endl;
  41. }
  42. return 0;
  43. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. Constructor called.
  2. Constructor called.
  3. Box2 is equal to or larger than Box1