23/08/2018, 11:03

Con trỏ this trong C++

Mỗi đối tượng trong C++ có sự truy cập tới vị trí riêng của nó thông qua một con trỏ quan trọng gọi là con trỏ this . Con trỏ this trong C++ là một tham số ẩn với tất cả hàm thành viên. Vì thế, bên trong một hàm thành viên, con trỏ this có thể tham chiếu tới ...

Mỗi đối tượng trong C++ có sự truy cập tới vị trí riêng của nó thông qua một con trỏ quan trọng gọi là con trỏ this. Con trỏ this trong C++ là một tham số ẩn với tất cả hàm thành viên. Vì thế, bên trong một hàm thành viên, con trỏ this có thể tham chiếu tới đối tượng đang gọi.

Các hàm friend không có con trỏ this, bởi vì friend không phải là các thành viên của một lớp. Chỉ có các hàm thành viên trong C++ là có con trỏ this.

Bạn xét ví dụ sau để hiểu khái niệm về con trỏ this trong C++:

#include <iostream>
 
using namespace std;

class Box
{
   public:
      // phan dinh nghia Constructor
      Box(double dai=1.0, double rong=1.0, double cao=1.0)
      {
         cout <<"Constructor duoc goi!" << endl;
         chieudai = dai;
         chieurong = rong;
         chieucao = cao;
      }
      double theTich()
      {
         return chieudai * chieurong * chieucao;
      }
      int sosanh(Box box)
      {
         return this->theTich() > box.theTich();
      }
   private:
      double chieudai;     // chieu dai cua mot box
      double chieurong;    // chieu rong cua mot box
      double chieucao;     // chieu cao cua mot box
};

int main(void)
{
   Box Box1(2.4, 4.2, 2.2);    // khai bao box1
   Box Box2(4.5, 2.0, 3.2);    // khai bao box2

   if(Box1.sosanh(Box2))
   {
      cout << "Box2 la nho hon Box1" <<endl;
   }
   else
   {
      cout << "Box2 la bang hoac lon hon Box1" <<endl;
   }
   return 0;
}

Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:

Theo Tutorialspoint

Bài trước: Hàm inline trong C++

Bài tiếp: Con trỏ tới lớp trong C++

0