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

Thành viên tĩnh – Từ khóa static

Một lớp có thể chứa các thành viên tĩnh hoặc không tĩnh. Nếu bạn không chỉ định từ khóa là static cho các thành viên, thì theo mặc định, nó sẽ là non-static. Nếu bạn muốn quy định cho một thành viên nào là tĩnh, thì bạn bổ sung từ khóa static vào trước nó. Nếu là thành viên không tĩnh, bạn không cần khai báo bất kì từ khóa nào.
Một dữ liệu thành viên tĩnh của lớp như là một biến toàn cục của lớp đó. Bởi mọi sự thay đổi dữ liệu thành viên tĩnh của đối tượng này đều có tác dụng lên toàn bộ các dữ liệu thành viên tĩnh của các đối tượng khác.
Một phương thức không tĩnh có quyền truy cập đến các dữ liệu thành viên không tĩnh. Một phương thức tĩnh có thế truy cập đến dữ liệu thành viên không tĩnh. Trong trường hợp này, bạn cần tạo ra một sự thể hiện của đối tượng và truy cập đến các thuộc tính không tĩnh từ đối tượng này.Để truy cập đến thành viên không tĩnh, ta sử dụng một sự thể hiện của đối tượng, sau đó là dấu chấm (hoặc ->), tiếp đến là thành viên không tĩnh.Để truy cập đến đối tượng tĩnh, ta sử dụng toán tử phạm vi ngay sau tên lớp, tiếp đến là thành viên tĩnh.
Các phương thức tĩnh và không tĩnh có thể truy cập lẫn nhau.
Ví dụ Kết quả
#include using namespace std;
class Car
{
public:
string name;
int serial;
public:
static int count;
static void Show()
{
Car vehicle;
vehicle.name  = “Ford”;
vehicle.serial = 123;
cout << “\nName: ” << vehicle.name;
cout << “\nSerial: ” << vehicle.serial;
}
static void CallShowStatic(){
Show();
}
void CallShowNonStatic(){
Show();
}
};
int Car::count = 2;
int main()
{
Car a;
cout<<”—Call by NonStatic method—”;
a.CallShowNonStatic();
cout<<”\n—Call by Static method—”;
Car::CallShowStatic();
cout << “\n\nCount: ” <
return 0;
}
—Call by NonStatic method— Name: Ford
Serial: 123
—Call by Static method—
Name: Ford
Serial: 123
Count: 2
Giải thích: Hàm thành viên Show là static, nên muốn truy cập đến các dữ liệu thành viên không tĩnh thì nó cần tạo một sự thể hiện của lớp đó là đối tượng vehicle. Hàm CallShowStatic là static, hàm  CallShowNonStatic  là non-static đều có thể truy cập đến hàm Show là static một cách trực tiếp. Trong hàm main, các hàm non-static được gọi thông qua một sự thể hiện lớp, còn hàm static được gọi thông qua toán tử phạm vi. Dữ liệu static là count cũng được truy cập thông qua toán tử phạm vi.
Mặc dù thành viên static có thể được truy cập trực tiếp thông qua toán tử phạm vi, nhưng nó cũng chịu sự chi phối của các mức truy cập (private, protected, public).
Chỉ có các thành viên không tĩnh mới có thể sử dụng con trỏ this.

No comments:

Post a Comment