Trong lập trình C++, khi bạn muốn khai báo một biến có tính tĩnh, bạn sử dụng từ khóa "static". Biến tĩnh là biến mà giá trị của nó được bảo tồn giữa các lần gọi hàm và có thể dùng để chia sẻ dữ liệu giữa các phương thức hoặc đối tượng khác nhau mà không cần phải truyền biến thông qua đối số hoặc hàm.
Biến tĩnh trong hàm
Biến tĩnh khai báo trong một hàm sẽ giữ nguyên giá trị của nó qua các lần gọi hàm khác nhau. Điều này rất hữu ích khi bạn cần một biến đếm số lần gọi hàm hoặc để lưu trữ một trạng thái nào đó qua nhiều lần gọi:
void exampleFunction() {
static int counter = 0; // Biến tĩnh, chỉ được khởi tạo một lần
counter++;
std::cout << "Hàm được gọi " << counter << " lần." << std::endl;
}
Trong ví dụ trên, mỗi lần exampleFunction
được gọi, biến counter
sẽ được tăng thêm 1 và giá trị của nó sẽ được bảo tồn giữa các lần gọi hàm.
Biến tĩnh trong lớp
Biến tĩnh cũng có thể được khai báo trong một lớp. Biến tĩnh của lớp sẽ là biến dùng chung cho tất cả các đối tượng của lớp đó.
class Example {
public:
static int staticVariable; // Khai báo biến tĩnh
};
int Example::staticVariable = 0; // Định nghĩa và khởi tạo biến tĩnh
int main() {
Example obj1;
Example obj2;
obj1.staticVariable = 10; // Thay đổi giá trị biến tĩnh
std::cout << "Giá trị biến tĩnh (qua obj1): " << obj1.staticVariable << std::endl; // In giá trị biến tĩnh
std::cout << "Giá trị biến tĩnh (qua obj2): " << obj2.staticVariable << std::endl; // Giá trị biến tĩnh vẫn giữ nguyên
}
Trong ví dụ này, staticVariable
là biến tĩnh của lớp Example
. Được khai báo bằng từ khóa static
, biến này được chia sẻ giữa tất cả các đối tượng của lớp Example
.
Hàm tĩnh trong lớp
Bên cạnh biến tĩnh, bạn cũng có thể khai báo hàm tĩnh trong một lớp. Hàm tĩnh cũng được dùng chung cho tất cả các đối tượng của lớp và có thể được gọi mà không cần phải tạo đối tượng của lớp đó.
class Example {
public:
static void staticFunction() {
std::cout << "Đây là hàm tĩnh." << std::endl;
}
};
int main() {
Example::staticFunction(); // Gọi hàm tĩnh mà không cần tạo đối tượng
}
Hàm staticFunction
trong ví dụ trên có thể được gọi trực tiếp thông qua tên lớp mà không cần phải tạo một đối tượng của lớp Example
.
Tóm lại
Tính tĩnh của biến và hàm có nhiều ưu điểm trong việc quản lý bộ nhớ và thiết kế chương trình. Sử dụng từ khóa "static" trong C++ giúp lập trình viên kiểm soát được việc lưu trữ và chia sẻ dữ liệu một cách hiệu quả, cũng như tạo ra các phương thức và thuộc tính lớp dùng chung cho mọi đối tượng mà không cần tạo nhiều bản sao.
Comments