namespace A { namespace B { int x; } }、同名命名空間可分散定義合併。namespace short = very_long_name;。using namespace A;(引入所有)、using A::x;(引入單個)。注意作用域與衝突解決(A::x)。namespace { ... } 替代 static 限制文件內可見性。_Z3goi、_Z3god。void(*p1)(int)=go; void(*p2)(double)=go;。auto x = 3.14; // double)。for (auto& x : vec) 自動推導元素類型,僅適用於數組/容器(有 begin/end)。auto 返回類型推導)。| 操作 | 語法 | 關鍵點 |
|---|---|---|
| 單對象 | T* p = new T; delete p; | 調用構造/析構,拋出 bad_alloc 失敗 |
| 對象數組 | T* p = new T[n]; delete[] p; | 必須用 delete[],否則未定義行為 |
| 定位 new | new (buf) T; | 在預分配緩衝區構造,不分配內存 |
| 重載 new/delete | 類內 static void* operator new(size_t) | 攔截分配/釋放,可加統計、池化、對齊 |
new:類型安全、調用構造函數、可重載、拋出異常。malloc:返回 void*、僅分配原始內存、需轉型、返回 NULL 表示失敗。new 配 delete,malloc 配 free。unique_ptr, shared_ptr)、容器管理內存,極少直接裸 new/delete。f(int) 和 f(int, int=0) 會衝突)。