Tiêu đề về cơ bản nói lên tất cả, tôi tự hỏi khi nào các thành viên tĩnh của một lớp C++ được khởi tạo và khi chúng ra khỏi phạm vi.C++ Phạm vi biến thành viên tĩnh
Tôi cần điều này cho vấn đề sau. Tôi có nhiều đối tượng của một lớp Foo và mỗi đối tượng cần truy cập vào một tài nguyên, được đóng gói bởi một lớp Bar khác. Đồng bộ hóa không phải là một vấn đề, vì vậy tôi muốn tất cả các đối tượng chia sẻ cùng một cá thể Bar.
Tôi đang sử dụng một con trỏ được quản lý đơn giản để tính tham chiếu.
Tôi có thể làm như sau:
class Foo {
private:
static managed_pointer<Bar> staticBar;
public:
Foo() {
if(!staticBar)
staticBar = new Bar;
}
/*
* use staticBar in various non-static member functions
*/
};
managed_pointer<Bar> Foo::staticBar = NULL;
các managed_pointer staticBar nên xóa các đối tượng Bar ngay sau khi nó đi ra khỏi phạm vi - nhưng khi điều này xảy ra? khi trường hợp cuối cùng của Foo bị phá hủy? về thoát ứng dụng?
Cảm ơn lời khuyên của bạn!
oops, cảm ơn bạn đã sửa lỗi đánh máy. – Pontomedon
Ví dụ cuối cùng của Foo bị hủy khi bạn chỉ xóa phiên bản cuối cùng hoặc khi chương trình của bạn tồn tại. Một thành viên tĩnh của một lớp sẽ tồn tại cho dù có bao nhiêu phiên bản của lớp đó. – Gabi