經典笑話描述:同樣印出 "Hello World",隨著程式設計師職級提升,代碼從幾行 C 風格膨脹為層層封裝的 C++ 框架。乍看是諷刺過度設計,細品卻揭示核心權衡:犧牲 C 的簡潔高效,換取封裝、複用與跨環境適應性。若只是印字串,當然無須大動干戈;但企業級開發中,這筆「前期投資」能大幅降低長期維護成本。
| 類別 | 儲存位置 | 說明 |
|---|---|---|
| 非靜態資料成員 | 物件內部 | 每個實例獨擁一份 |
| 靜態資料成員 | 物件外部 | 全類別共享單一拷貝 |
| 靜態/非靜態成員函數 | 物件外部 | 程式碼區共享 |
| 虛擬函數 | 透過 vptr → vtbl | 動態綁定關鍵 |
vptr 由建構函數、解構函數、copy assignment 自動管理,開發者無需手動干預。
每個類別幾乎都需自訂這三者,否則編譯器合成的預設版本(位元拷貝)在含指標成員時會釀禍。
第一章後半部因難度較高、時間有限,分多次發布。作者誠摯建議:不要把筆記寫成抄書,要寫出自己的理解。哪怕「反覆讀 3 遍仍覺夾生」,也要堅持「再看 3 遍」——這正是啟蒙的過程。C++ 功力不夠不可怕,可怕的是以為懂了卻停留在語法表層。