如何在 C++ 中「只宣告、不立即建構」物件(非指標),即類似 A instance; 而非 A* pInstance?
C++ 中 **宣告即定義**,只要寫 A instance;,編譯器就會在堆疊上配置記憶體並**呼叫預設建構函式**。若類別無預設建構函式,編譯報錯。
A* p = nullptr; 稍後 p = new A(args); 或 std::unique_ptr<A> p = std::make_unique<A>(args);。std::optional<A> opt; 稍後 opt.emplace(args);,物件存於 optional 內部儲存空間,無動態分配。alignas(A) char buf[sizeof(A)];,需要時 new (buf) A(args);,銷毀時手動呼叫解構函式。extern A instance;,單一 cpp 檔定義 A instance(args);,但程式啟動前仍會建構。現代 C++ 首選 std::optional 或智慧指標,語意清晰且安全。避免手動 placement new 除非極度效能敏感。