×

Sử dụng từ khóa static để khai báo biến tĩnh trong C++

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