考慮一個單一的翻譯單元下面的代碼:靜態數據成員的初始化爲了
class C {
private:
struct Init {
Init() {
/* compute data once here */
}
};
static const Init& i;
static int data[];
public:
/* interface for reading data */
};
const C::Init& C::i = Init();
int C::data[200];
- 是C ::我後的C ::數據總是被初始化,無論兩者的定義的順序?
- 此解決方案是最優雅的一次用於計算靜態數據嗎?
你能詳細解釋一下你認爲答案是針對你提出的問題嗎? – Grammin
1.我認爲是因爲涉及的類型。數據是int [],而我是const Init&,它可能涉及main()之前的一個更精細的構造,但是在其他基本(POD?)類型的靜態數據成員之後。我需要兩種類型對象的標準和正確術語的確認。 – Martin