C/C++ 函式設計精要(一):參數與回傳值的介面設計規範
第 6 章 函式設計 函式是程式基本功能單元,功能正確不夠,介面設計缺失極易導致誤用。本章聚焦介面設計(參數、回傳值)與內部實作規則。 C 語言參數/回傳傳遞
C++ 常數完全指南:const vs #define、類別常數與列舉常數
第 5 章 常數 常數是執行期恆定不變的識別符。C 用 #define(巨集常數),C++ 除 #define 外還有 const(const 常數)。 5.
C/C++ 運算式與基礎陳述句精要:優先序、if/迴圈/switch/goto 完全指南
第 4 章 運算式與基本語句 if/for/while/goto/switch 看似簡單,但許多程式設計師以隱含錯誤的方式撰寫。本章歸納正確使用規則與建議。
C/C++ 命名規範進階:反義詞組、編號避免與 Unix 風格補充
3.1 共性規則(續) 規則 3-1-8:互斥語意務必使用正確反義詞組 int minValue; int maxValue; int SetValue(..
C/C++ 命名規範核心原則:從通用規則到 Windows 風格實踐
第 3 章 命名規則 微軟的「匈牙利命名法」雖知名,但最大缺點是繁瑣。例如 int i, j, k; 須改成 int iI, iJ, iK;,讓多數程式設計師無
C/C++ 程式碼排版風格指南:讓程式碼像書法一樣美觀易讀
第 2 章 程式碼版式 版式雖不影響功能,但決定可讀性。優良版式追求清晰、美觀,是程式風格的重要構成。可將版式比喻為「書法」:好書法讓人一目了然、賞心悅目;差版
C/C++ 專案檔案結構規範:標頭檔與實作檔的最佳實踐
第 1 章 檔案結構 C/C++ 專案通常將程式碼分為兩類檔案: 標頭檔:副檔名 .h,存放宣告(declaration)。 實作檔:C 用 .c,C++ 慣
C++ 繼承與組合設計指南:正確使用繼承的鐵律
10.1 繼承:強大但危險的雙面刃 物件是類別的實例。若將物件比作房子,類別就是設計圖。OO 設計的核心在類別設計,而非物件設計。設計孤立類別容易,難在正確設計
C++ 類別核心三大函式:進階議題—偷懶技巧與繼承實作
指派函式的四步驟精華 String 指派函式比建構函式複雜,分四步完成: 檢查自我指派:if (this == &other) return *thi
C++ 類別核心三大函式:建構、解構與指派詳解(下)— 複製建構與指派實戰
9.3 建構與解構的順序 建構順序:從繼承階層最基層(最基底類別)開始,每層先建構基底類別,再建構成員物件。 解構順序:嚴格遵循建構的逆序,這是唯一確定的順序
C++ 類別核心三大函式:建構、解構與指派詳解(中)— 初始化列表
9.2 建構函式初始化列表 建構函式擁有特殊的初始化語法——初始化列表,位於參數列表之後、函式本體 {} 之前。列表中的初始化動作會在函式本體任何程式碼執行前完
C++ 類別核心三大函式:建構、解構與指派詳解(上)
前言:看似簡單,實則暗藏殺機 建構函式、解構函式、指派函式是每個類別最基礎的成員函式。它們平凡到讓人容易掉以輕心,實則如同「沒有蓋子的下水道」般危險。每個類別僅
C++ 進階特性:參數預設值與運算子多載詳解
8.3 參數的預設值 在函式呼叫時,若某些參數的值固定不變,每次都傳遞相同數值會顯得冗贅。C++ 提供了參數預設值機制,讓編譯器在編譯期自動填入預設值,大幅簡化
高品質 C++/C 程式設計指南:隱藏規則詳解、陷阱案例與 using 宣告解除隱藏
隱藏規則兩大情況 衍生類函數與基類函數同名、參數不同:無論 virtual,基類同名函數全部被隱藏(非多載)。 衍生類函數與基類函數同名、參數相同,但基類非
高品質 C++/C 程式設計指南:隱式轉換導致多載歧義與成員函數多載/覆蓋/隱藏辨析
隱式轉換產生多載歧義 void output(int x) { cout << int << x << endl; } void output(float
高品質 C++/C 程式設計指南:函數多載、內聯、extern "C" 與名稱修飾
多載起源與實現 自然語言一詞多義(重載),靠上下文消歧。 C++ 編譯器依參數型別/個數/順序產生內部修飾名(Name Mangling),如 _eat_be
高品質 C++/C 程式設計指南:new/delete 使用要點、陣列刪除陷阱與除錯心法
new/delete 簡化記憶體管理 // 配置單一物件 int* p1 = new int; Obj* obj = new Obj(10); // 呼叫建構
高品質 C++/C 程式設計指南:malloc/free 使用要點與 sizeof 陷阱
malloc 原型與正確用法 void* malloc(size_t size); // 申請 length 個 int int* p = (int*)mal