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.
Con trỏ *this có ý nghĩa gì?
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
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.
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
à à, 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.
e nghĩ là a gõ thừa dấu *
rồi ạ
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 de
và referenced
, có thể hiểu là truy ngược trở lại cái giá trị mà con trỏ này đang trỏ tới
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ỏ” ạ?
Có thể hiểu như vậy, mọi thay đổi trên *pa
sẽ áp dụng ngay lên a
vâng, lại phải thêm 1 comment.
à, 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.
cảm ơn anh