Tất nhiên chúng ta hoàn toàn có thể tạo ra một biến private static. Điều này rõ ràng ngăn cản việc truy cập trực tiếp vào biến, nhưng đôi khi chúng ta cần phải làm vậy nếu muốn bảo vệ biến đó khỏi bất cứ sự sửa đổi trái phép nào.
Chương trình sau là một ví dụ →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <iostream> using namespace std; class Class { static int Counter; public: Class(void) { ++Counter; }; ~Class(void) { --Counter; if(Counter == 0) cout << "Bye, bye!" << endl; }; void HowMany(void) { cout << Counter << " instances" << endl; } }; int Class::Counter = 0; int main(void) { Class a; Class b; b.HowMany(); Class c; Class d; d.HowMany(); return 0; } |
Chương trình sẽ cho ra output như sau:
1 2 3 |
2 instances 4 instances Bye, bye! |
Lưu ý rằng bất kỳ nỗ lực nào để truy cập trực tiếp vào biến Counter như sau:
Class :: Counter = 1;
đều bị nghiêm cấm