Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số đối tượng được tạo bằng static member function C++


Sử dụng biến thành viên static để đếm số lượng đối tượng đang tồn tại của một class. Biến static thuộc về class, không thuộc đối tượng.

Ví dụ mã nguồn

#include <iostream>
using namespace std;

class Tracked {
    static int count; // Khai báo
public:
    Tracked() { ++count; cout << "Tao doi tuong, tong: " << count << '\n'; }
    ~Tracked() { --count; cout << "Huy doi tuong, con: " << count << '\n'; }
    static int getCount() { return count; } // Static member function
};

// Định nghĩa biến static (cấp phát bộ nhớ)
int Tracked::count = 0;

int main() {
    cout << "Ban dau: " << Tracked::getCount() << '\n';
    {
        Tracked a, b;
        cout << "Trong block: " << Tracked::getCount() << '\n';
    } // a, b hủy ở đây
    cout << "Sau block: " << Tracked::getCount() << '\n';
    Tracked* p = new Tracked();
    cout << "Sau new: " << Tracked::getCount() << '\n';
    delete p;
    cout << "Sau delete: " << Tracked::getCount() << '\n';
    return 0;
}

Đầu ra

Ban dau: 0
Tao doi tuong, tong: 1
Tao doi tuong, tong: 2
Trong block: 2
Huy doi tuong, con: 1
Huy doi tuong, con: 0
Sau block: 0
Tao doi tuong, tong: 1
Sau new: 1
Huy doi tuong, con: 0
Sau delete: 0

Lưu ý

  • Biến static phải được định nghĩa ngoài class (trong file .cpp).
  • Hàm static chỉ truy cập được thành viên static.
  • Thread-safe: C++11 đảm bảo khởi tạo static local thread-safe, nhưng biến static class cần đồng bộ hóa thủ công nếu đa luồng.