3、C++ this 指针

参考资料:

C++ 中的 this 指针 | 菜鸟教程 (runoob.com)

C++ this指针(直戳本质) (biancheng.net)

C++ this指针详解(精辟) (biancheng.net)

 

在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。

C++ 规定,在非静态成员函数内部可以直接使用 this 关键字,this 就代表指向该函数所作用的对象的指针

因此,在成员函数内部,它可以用来指向调用对象。

因为静态成员函数并不作用于某个对象,所以在其内部不能使用 this 指针;

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

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

#include 

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   5.94
   Box Box2(8.5, 6.0, 2.0);     // Declare box2   102

   if (Box1.compare(Box2))
   {
      cout <<  "Box2 is smaller than Box1" <

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

Constructor called.
Constructor called.
Box2 is equal to or larger than Box1

  

 

posted @ 2023-03-23 23:45  多一些不为什么的坚持  阅读(22)  评论(0编辑  收藏  举报