語法、特性、標準庫、工具鏈、生態系統——龐大知識體系令初學者望而生畏。本文提煉 18 大核心重點,構建從入門到精通的知識骨架。
#include "file.h" (當前目錄優先) vs #include <file> (系統路徑)。int* p / int& r 貼近變數名,避免 int *p, q 誤讀。if (flag),勿比較 true/false。nullptr (C++11)。const 有型別、可除錯、作用域受控;類別常量用 static constexpr 或枚舉。const T& (避免拷貝)、輸出參數用 T&、轉移所有權用 T&&、POD 小型別可值傳遞。void f(void) 或 void f()。std::optional、輸出參數。new/malloc、手動管理)。nullptr。const 指向資料。strcpy/strcmp;C++ 用 std::string 運算子。sizeof 失效。int* p = nullptr;)。delete/free 後置 nullptr。new[] 必須 delete[] (漏括號僅析構首元素)。new 自動調用,malloc 不調用 —— 非 POD 型別禁用 malloc。new 編譯期檢查,malloc 無。new/delete、new[]/delete[]、malloc/free 嚴禁混用。new 失敗拋 bad_alloc;set_new_handler 自訂 OOM 策略。| 機制 | 適用範圍 | 關鍵點 |
|---|---|---|
| 多載 | 全域/成員函式 | 同名不同參,virtual 可有可無 |
| 內聯 | 全域/成員函式 | inline 需與定義同處,建議放頭檔 |
| const | 僅成員函式 | 修飾 this 為 const,只能呼叫 const 成員 |
| virtual | 僅成員函式 | 動態派發,基類析構必須 virtual |
virtual、同名同參、派生類 override。virtual) 或同名同參無 virtual。用 using Base::func 解除。inline 必須與函式體同現於頭檔。const 參數防誤改、const 參考傳遞提效、const 回傳值防修改、const 成員函式承諾不修改狀態。告訴 C++ 編譯器用 C 名稱修飾規則,使 C++ 可呼叫 C 函式庫、C 可呼叫 C++ 導出函式。DLL 導出/導入、包含 C 頭檔時必加。
#ifndef MY_HEADER_H
#define MY_HEADER_H
// 內容
#endif
// 或 C++11 較新編譯器支援
#pragma once
unique_ptr/shared_ptr/weak_ptr) 取代裸指標。std::move、右值參考) 消除不必要拷貝。auto/decltype/constexpr/if constexpr。string_view/span/optional/variant/any/filesystem/format。這 18 大重點是 C++ 工程師的「內功心法」。語法細節可查手冊,但記憶體模型、物件生命週期、型別系統、抽象機制、工具鏈——這些核心概念才是區分「寫得出代碼」與「寫得出好代碼」的分水嶺。建立知識圖譜,專項突破,持續重構,方能登頂。