Khi dùng từ khóa static, biến, thành viên dữ liệu hoặc hàm không thể sửa đổi lại. Nó được cấp phát cho vòng đời chương trình. Hàm tĩnh có thể gọi trực tiếp bằng tên lớp.
Biến tĩnh chỉ khởi tạo một lần. Compiler giữ biến đến cuối chương trình. Biến tĩnh có thể định nghĩa trong hoặc ngoài hàm. Chúng cục bộ trong khối. Giá trị mặc định của biến tĩnh là 0. Biến tĩnh sống cho đến khi chương trình kết thúc.
Cú pháp static trong C++:
static datatype variable_name = value; // Biến tĩnh
static return_type function_name { // Hàm tĩnh
...
}
Ở đây,
datatype - Kiểu dữ liệu như int, char, float...
variable_name - Tên biến do người dùng đặt.
value - Giá trị khởi tạo, mặc định 0.
return_type - Kiểu trả về của hàm.
function_name - Tên hàm.
Ví dụ biến tĩnh C++:
Ví dụ
#include <bits/stdc++.h>
using namespace std;
class Base {
public:
static int val;
static int func(int a) {
cout << "\nHàm thành viên tĩnh được gọi";
cout << "\nGiá trị của a: " << a;
}
};
int Base::val = 28;
int main() {
Base b;
Base::func(8);
cout << "\nGiá trị biến tĩnh: " << b.val;
return 0;
}
Kết quả
Hàm thành viên tĩnh được gọi Giá trị của a: 8 Giá trị biến tĩnh: 28
Trong chương trình, biến tĩnh khai báo và hàm tĩnh định nghĩa trong lớp Base.
public:
static int val;
static int func(int a) {
cout << "\nHàm thành viên tĩnh được gọi";
cout << "\nGiá trị của a: " << a;
}
}
Sau lớp và trước main(), biến tĩnh khởi tạo:
int Base::val = 28;
Trong main(), đối tượng Base tạo, biến tĩnh truy cập. Hàm tĩnh gọi không cần đối tượng.
Base b; Base::func(8); cout << "\nGiá trị biến tĩnh: " << b.val;