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 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 |
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