[OOP] Con trỏ this trong C++ (this pointer)

Trong C++ cung cấp cho ta 1 con trỏ this (this pointer), trỏ tới đối tượng đang gọi.

Con trỏ this là tham số ẩn của các hàm thành viên non static trong class đó.

Ví dụ:


#include <iostream>

using namespace std;

class Test

{

private:

   int m_val;

public:

   void SetVal(int val)

   {

      this->m_val = val;

   }

   int GetVal() const

   {

      return this->m_val;

   }

   void Display() const

   {

      cout << "m_val = " << this->m_val << endl;

   }

};

int main()

{

   Test t;

   t.SetVal(40);

   t.Display();

   return 0;

}

Kết quả:

m_val = 40

Trong ví dụ trên ta cùng xem xét câu lệnh:

t.SetVal(40);

Câu lênh trên ta gọi hàm SetVal thông qua đối tượng t và truyền vào 1 đối số là 40. Tuy nhiên khi biên dịch trình biên dịch sẽ chuyển đổi câu lênh trên thành.

SetVal(&t, 40)

Lúc này hàm SetVal sẽ có 2 đối số truyền vào:

  • &t chính là đối số truyền vào cho tham số ẩn của hàm, chính là con trỏ this (this = &t)
  • 40 là đối số tường minh của hàm SetVal.

Chú ý:

  • Không thế sử dụng con trỏ this trong hàm thành viên tĩnh (static member function).
  • Không thể sử dụng con trỏ this bên trong hàm bạn (friend function) của class

Was this article helpful?

Leave A Comment?