Con trỏ this trong class hoạt động như thế nào?

Như tiêu đề ạ, có phải nó đc truyền ngầm định vào function trong class không

this có nghĩa là thực thể hiện tại, chính bản thân thực thể được tạo ra khi gọi hàm tạo (constructor). Nó là 1 con trỏ.
Khi gọi các phương thức / thuộc tính (trường) của lớp hiện tại thì bạn có thể thêm this hoặc nếu không thì nó ngầm định hiểu rằng bạn đang gọi cho thực thể hiện tại.
Số ít trường hợp bạn chỉ dùng đến kiểu dữ liệu hiện tại thì bắt buộc phải dùng đến this.

class X{
    public:
    int a;
    X(){
        a = 96;
    }
    X(int aa){
        a = aa;
    }
    
    void out(){
        cout << "out" << endl;
    }
    
    void test(){
        this->out(); // dùng this
        out(); // hay không dùng đều được.
    }
    
    bool operator ==(X v){
        // return this->a == v.a;
        return a == v.a;
    }
    
    bool operator !=(X v){
        return !(*this == v); // phải dùng this
    }
};

int main()
{
    X x(69);
    x.test();
    X y(69);
    cout << "Diff: " << (x != y);
    cout << "Equal: " << (x == y);
    return 0;
}

Cách hiểu tốt nhất là lao đầu vào thực hành, lỗi sinh ra, sửa được là hiểu.

4 Likes

Cái này do compiler nó thực hiện, bạn chỉ cần biết cách dùng thôi, không nên tìm hiểu quá sâu.
Giống như bạn tập lái vậy, bạn chỉ cần lái mà không cần quan tâm cái xe nó chạy ntn,

5 Likes

Đúng vậy, thường người ta không để ý vì không cần thiết :smiley:

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?