Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Saturday, September 11, 2010

Con trỏ this

Con trỏ this trỏ vào dữ liệu thành viên của chính nó. Điều này có nghĩa là con trỏ this chỉ có phạm vi tác dụng trong một lớp. Một điều cực kì quan trọng, là con trỏ this chỉ hoạt động với các dữ liệu thành viên và các hàm thành viên được khai báo là không tĩnh (non-static). Các dữ liệu thành viên và hàm thành viên tĩnh (static) không hỗ trợ con trỏ this.
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 using namespace std;
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