Con trỏ *this có ý nghĩa gì?

Mình có câu hỏi về cái *this. Cái *this này mình dùng để làm gì và khi nào vậy mọi người? Cám ơn mọi người trước.

Nói vậy cho dễ hiểu nhé bạn, trong 1 hàm con trỏ this giữ địa chỉ của chính đối tượng đang gọi tới nó.

Ví dụ trong hàm A(). mình có con trỏ this, thì nếu mình dùng B.A() thì this chính là đối tượng B

2 Likes

cám ơn anh nhé…

Nếu nói về con trỏ this thì @tuancoi2506 nói hợp lý rồi, @butobino15 có thể xem thêm bài con trỏ this ở đây

Tuy nhiên *this lại phức tạp hơn một tí. Cũng giống như các con trỏ khác, *this lấy giá trị của vùng nhớ mà nó đang trỏ tới.

Ta đã biết this trỏ đến đối tượng của nó, nếu @butobino15 thắc mắc về this thì nên xem video trên, thế nên *this lấy giá trị của chính nó.

Vậy *this dùng để làm gì? Việc return *this trở về bên ngoài class tương đương với việc trả về một bản copy của class đó.

Nếu @butobino15 thắc mắc nhiều hơn, thì đọc qua topic này

Nếu @butobino15 đọc qua nhưng không hiểu, vì vấn đề tiếng Anh hay các vấn đề khác. Cứ reply ở đây, Đạt sẽ giải thích rõ hơn.

4 Likes

dereferenced pointer là gì anh?

Ví dụ đơn giản hơn giải thích:

int a = 3;
int *pa = &a;

printf("*pa = %d\n", *pa); // *pa = 3

*pa = 4;
printf("*pa = %d\n", *pa); // *pa = 4

Output:

*pa = 3
*pa = 4

cái này output a=4 hay a=3 hả a

@htwap bây giờ a bằng 4, em có thể thử với chương trình anh viết hoàn thiện ở dưới

#include <stdio.h>

int main()
{
    int a = 3;
    int *pa = &a;

    printf("*pa = %d\n", *pa); // *pa = 3

    *pa = 4;
    printf("*pa = %d\n", *pa); // *pa = 4

    printf("a = %d\n", a);

    return 0;
}

Output

*pa = 3
*pa = 4
a = 4

1 Like

à à, e hiểu rồi. cái *pa chính là cái a, còn cái pa chính là địa chỉ của a.

1 Like

Và đó cũng là cái mà @Rok_Hoang hỏi ở trên

e nghĩ là a gõ thừa dấu * rồi ạ

1 Like

dereferenced pointer là gì vậy a?

Tức là dấu * đặt phía trước pointer đó. Chữ này tách ra làm 2 phần dereferenced, có thể hiểu là truy ngược trở lại cái giá trị mà con trỏ này đang trỏ tới

3 Likes

vâng, e hiểu rồi. thế có thể dịch là “ngược trở lại tham chiếu của con trỏ” ạ?

1 Like

Có thể hiểu như vậy, mọi thay đổi trên *pa sẽ áp dụng ngay lên a

2 Likes

vâng, lại phải thêm 1 comment. :scream:

1 Like

:smiley: à, cảm ơn anh. Em sử dụng cái này nhiều mà không biết tên của phương thức này.

1 Like

link http://portal.daynhauhoc.com/series/c-bai-73-this-pointer/41 ko vô được anh Đạt ơi

cảm ơn anh :grinning::grinning:

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