Các thành viên tĩnh trong lớp C++ có thể được định nghĩa bằng từ khóa static. Chỉ có một bản sao của thành viên tĩnh trong bộ nhớ, bất kể số lượng đối tượng. Do đó, thành viên tĩnh được chia sẻ bởi tất cả các đối tượng của lớp.
Thành viên tĩnh của lớp được khởi tạo bằng 0 khi đối tượng đầu tiên được tạo nếu không khởi tạo cách khác.
Chương trình minh họa định nghĩa thành viên tĩnh:
Ví dụ
#include <iostream>
using namespace std;
class Point {
int x;
int y;
public:
static int count;
Point(int x1, int y1) {
x = x1;
y = y1;
count++;
}
void display() {
cout << "Điểm là (" << x << "," << y << ")\n";
}
};
int Point::count = 0;
int main(void) {
Point p1(10, 5);
Point p2(7, 9);
Point p3(1, 2);
p1.display();
p2.display();
p3.display();
cout << "\nSố đối tượng là: " << Point::count;
return 0;
}
Kết quả chương trình:
Điểm là (10,5) Điểm là (7,9) Điểm là (1,2) Số đối tượng là: 3
Hãy hiểu chương trình.
Lớp Point có 2 thành viên dữ liệu x và y tạo thành một điểm. Có thành viên tĩnh count theo dõi số đối tượng tạo ra. Constructor Point() khởi tạo x, y và tăng count. Hàm display() hiển thị giá trị.
class Point {
int x;
int y;
public:
static int count;
Point(int x1, int y1) {
x = x1;
y = y1;
count++;
}
void display() {
cout << "Điểm là (" << x << "," << y << ")\n";
}
};
Trong main(), 3 đối tượng Point được tạo. Giá trị hiển thị bằng display(). Sau đó count được in.
Point p1(10,5); Point p2(7,9); Point p3(1,2); p1.display(); p2.display(); p3.display(); cout << "\nSố đối tượng là: " << Point::count;