Toán tử (arrow) -> , this-> khác hay giống như thế nào với toán tử *

Mình nghiên cứu hướng đối tượng gặp 2 toán tử -> và this -> , không biết hai cái này có giống nhau không, nó khác gì với con trỏ, mọi người cùng thảo luận nhé <3

Theo mình hiểu là hai cái đó khác nhau.

  • “->” được dùng cho con trỏ, nghĩa là dấu này theo sau biến con trỏ để thể hiện việc dùng con trỏ để gọi một hàm thành phần nào đó, tuỳ theo con trỏ bạn sử dụng để làm gì. VD như: p -> Xuat();

  • “this ->” là con trỏ this, dùng trong định nghĩa các hàm thành phần, con trỏ này luôn trỏ tới đối tượng dùng làm tham số ngầm định trong lời gọi hàm thành phần. VD:

               class ToaDo
                  {
                  private:
                  float x, y;
                  public:
                  void Nhap();
      `           void Xuat();
                  };    
    
               void ToaDo::Nhap() 
                  {
                      cout << “Nhap toa do:”;
                      cin >> this->x >> this->y;
                   }
    
             void ToaDo::Xuat()
               {
                   cout << this->x << “,” << this->y << “\n”;
               }
    
              void main()
              {
              ToaDo a;
              a.Nhap();
              a.Xuat();
              }
    

Từ đoạn code minh hoạ trên thì ý nghĩa nôm na của “this ->” là cho ta biết các giá trị x, y khi gọi hàm là các giá trị thuộc đối tượng a (ToaDo).

Nếu có gì sai sót, mọi người góp ý thêm a.

3 Likes
class ToaDo
{
     private:
     float x, y;
public:
     void Nhap();
     void Xuat();
     void NhapXuat();
};    

    void ToaDo::Nhap() 
    {
        cout << “Nhap toa do:”;
        cin >> this->x >> this->y;
     }

    void ToaDo::Xuat()
    {
        cout << x << “,” << this->y << “\n”;
    }

    void ToaDo::NhapXuat()
    {
        Nhap();
        this->Xuat();
        cout<< "Xuat lan 2"<<endl; 
        Xuat();
    }
    void main()
    {
         ToaDo a;
         a.Nhap();
         a.Xuat();
         ToaDo* b = new ToaDo();
         b->NhapXuat();
         delete b;
   }

Bổ sung thêm 1 vài trường hợp dùng ->

1 Like

Mình cũng không hiểu tại sao lại dùng this , mình bỏ this đi thấy như nhau, bạn có thể giải thêm không

  • Để phân biệt khi thành phần trùng tên với tham số
  • Để chỉ rõ là cái này của đối tượng.
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?