標準 C++ 標頭檔不含 .h 後綴(如 <iostream>)。C 標頭檔建議改為 c 前綴形式(<cstdio>、<cmath>)。標準庫所有符號置於 std 命名空間,使用時需加 std:: 前綴,或以 using namespace std; 一次引入。
cin >> var、cout << data,支援鏈式操作。.cpp、.C、.cc、.cxx。g++ 或 gcc -lstdc++。/* */ 區塊註解、// 單行註解。命名空間解決符號衝突。可巢狀定義:namespace A { namespace B { int x; } },存取為 A::B::x。using namespace A; 導入整個空間;using A::x; 僅導入特定符號。全域命名空間以 :: 存取(如 ::var)。
bool:真正布林型別(C99 引入),true/false,轉整數為 1/0。非零即真。sizeof('X') == 1(C 語言為 4)。void*:嚴格禁止隱式轉換為其他指標型別,體現強型別特性。C++ 提供四種具體轉換運算子,取代 C 風格強制轉型:
static_cast<T>(expr):數值型別互轉、void* 與具體指標互轉。reinterpret_cast<T>(expr):位元重新解讀,如指標轉整數、不同指標型別互轉。const_cast<T>(expr):移除 const/volatile 資格。dynamic_cast:執行期多態轉型(後文詳述)。const 屬性可構成多載。inline 建議編譯器展開呼叫點程式碼,避免呼叫開銷,替代巨集函式,具型別安全且無副作用。類別內定義的成員函式預設為內聯。Type& name = init; 本質為指標別名,必須初始化且不可重繫結。參考非新型別,而是傳遞語意。const 參考可綁定暫時物件。new Type、new Type(init)、new Type[n] 配置記憶體,失敗拋出 bad_alloc;new (nothrow) Type 失敗回傳 nullptr。delete ptr、delete[] ptr 釋放,需與 new/new[] 配對。delete nullptr 安全無效。new:new (address) Type 在指定位址建構物件(少用)。class 預設 private(封裝隱藏);struct 預設 public(相容 C)。成員函式定義於類外時以 ClassName::funcName 指定。建議類別拆分為 .h(宣告)與 .cpp(實作)。
ClassName::ClassName(int x) : member(x), constMember(10), refMember(r) { } 初始化 const、參考成員及成員物件,效率更高。~ClassName(),無參、不可多載。未定義時編譯器產生空解構子。釋放物件自有記憶體後執行解構子本體,可釋放額外資源。main 前後建構/解構;區域物件於作用域進出時建構/解構;動態物件由 new/delete 控制;暫時物件於完整運算式結束時銷毀。this 指標與靜態成員this:ClassName* const,指向呼叫成員函式的物件。*this 為物件本身。const 成員函式中 this 型別為 const ClassName* const。static 成員屬於類別而非物件。靜態資料成員須在類外定義初始化(int ClassName::staticVar = 0;)。靜態成員函式無 this,僅能存取靜態成員。operator@。參數對應運算元,回傳值對應結果。. .* :: ?: sizeof typeid 及四種轉型運算子不可多載。RetType operator@(Operand1, Operand2)。需為 friend 才能存取私有成員。operator<</operator>> 必須為全域函式(左運算元為串流物件)。RetType ClassName::operator@(Operand2),左運算元隱含為 *this。[] () = -> 型別轉換 必須為成員函式。ClassName& operator=(const ClassName&)。預設逐成員指派。若含指標成員指向動態記憶體,必須自訂實作深度複製(三大件:拷貝建構子、指派運算子、解構子)。回傳 *this 支援鏈式指派。operator TypeName(),無回傳型別、無參數、必須為成員函式。RetType operator()(Params),參數個數不定。支援此運算子的物件稱函式物件。T& operator++();後置版本需虛設參數 T operator++(int),回傳舊值副本。T* operator->() 回傳內部物件位址,編譯器再遞迴套用 ->。new[]/delete[] 為獨立運算子。ClassName(const ClassName&)。以同類別物件初始化新物件時呼叫。預設逐成員複製。含指標成員指向動態記憶體時,必須自訂實作深度複製。ClassName(args); 無變數名,語句結束即銷毀。單參數建構子可隱式型別轉換,explicit 關鍵字可禁止。TypeName() 產生零值或匿名物件。const 物件僅能呼叫 const 成員函式。mutable 成員允許在 const 物件/函式中修改。friend 函式/類別可存取私有/保護成員。友元非成員、單向、不傳遞。