Ví dụ trong phương thức hàm tạo của lớp Complex trên, chúng ta có thể sử dụng this->real để truy cập thuộc tính real, this->img – để truy cập thuộc tính img. Bạn cũng có thể so sánh một đối tượng khác với đối tượng nội tại nhờ vào con trỏ this này.
Ví dụ | Kết quả |
#include class Complex{ float real; float img; public: Complex(float, float); bool isMe(const Complex&); }; Complex::Complex(float real, float img){ this->real = real; this->img = img; } bool Complex::isMe(const Complex& c){ if(&c==this) return true; else return false; } int main(){ Complex a(3, 2); Complex b(2, 2); Complex *c = &a; cout< cout< return 0; } | 0 1 |
Giải thích: với việc sử dụng con trỏ this trong hàm tạo, bạn có thể đặt tên các tham số trong hàm tạo trùng với tên các dữ liệu của lớp. Để truy cập đến các thuộc tính của lớp, ta sử dụng con trỏ this. Hàm thành viên isMe sẽ kiểm tra một đối tượng có phải là chính nó hay không (có cùng địa chỉ trên bộ nhớ). Dù là một bản sao của nó (có dữ liệu thành viên giống nhau) thì kết quả nhận được cũng là sai (0). Trong hàm main, ta khởi tạo hai đối tượng a và b. Đối tượng con trỏ c sẽ trỏ vào địa chỉ của đối tượng a. Điều này có nghĩa là c sẽ có cùng vùng địa chỉ với a, còn b thì không. Khi gọi hàm a.isMe(b) sẽ cho kết quả là sai (0) và a.isMe(*c) sẽ cho kết quả là đúng (1).
No comments:
Post a Comment