在C++中,構造函數用于初始化對象的狀態
以下是一個示例,展示了如何在構造函數中初始化靜態成員:
#include <iostream>
class MyClass {
public:
// 構造函數
MyClass() {
// 初始化靜態成員
if (s_count == 0) {
s_data = new int[10];
for (int i = 0; i < 10; ++i) {
s_data[i] = i * 2;
}
}
++s_count;
}
// 析構函數
~MyClass() {
if (--s_count == 0) {
delete[] s_data;
}
}
private:
static int* s_data; // 靜態成員變量
static int s_count; // 靜態成員變量
};
// 初始化靜態成員變量
int* MyClass::s_data = nullptr;
int MyClass::s_count = 0;
int main() {
MyClass obj1;
MyClass obj2;
MyClass obj3;
return 0;
}
在這個示例中,我們定義了一個名為MyClass
的類,它具有兩個靜態成員變量:s_data
和s_count
。我們在構造函數中檢查s_count
是否為0,如果是,則分配一個新的整數數組并將其初始化為特定值。在析構函數中,我們減少s_count
的值,并在s_count
為0時釋放分配的內存。這樣,我們可以確保靜態成員變量只被初始化一次,并在不再需要時被正確釋放。