C++ 核心規範:析構函數絕不能讓異常逃逸
兩種呼叫析構函數的情境 正常銷毀: 物件離開作用域或被顯式 delete。 堆疊展開: 例外傳播過程中,例外處理機制銷毀沿途的區域物件。 在析構函數內部,無
More Effective C++:建構函數中的資源洩漏防範與 auto_ptr 解決方案
問題場景:多媒體通訊錄的資源管理 設計一個通訊錄類別 BookEntry,除基本文字資料外,還包含圖片 (Image*) 與音訊 (AudioClip*) 指標
PC-Lint 靜態分析工具:四步快速上手指南
為什麼需要 PC-Lint? PC-Lint 是擁有 30 多年歷史的頂級靜態程式碼分析工具。它不僅能檢測語法邏輯錯誤,更能發現潛在缺陷、效能瓶頸與空間浪費。在
深入理解 C++ 中的 new 與 delete:操作符、函數與 placement new
前言:術語的陷阱 C++ 的術語有時令人困惑,例如 new operator(new 操作符)與 operator new 的區別。兩者僅一字之差,卻代表完全不
C++ 啟蒙:輸入輸出深度解析與流操作機制
標準 I/O 對象 cin (istream):標準輸入 cout (ostream):標準輸出 cerr:標準錯誤(無緩衝,即時輸出警告/錯誤) clog:
More Effective C++:別重載 && 和 || —— 短路求值將失效
C/C++ 邏輯運算符 &&、|| 具備**短路求值**:一旦結果確定,剩餘表達式不再計算。例: 10) ... // p 為空時不調用 strlen if
C++ class 與 struct 區別全景圖:訪問權限、繼承、初始化與模板參數
大括號初始化規則 定義了構造函數 → **class/struct 均不可用** 大括號初始化。 無構造函數 → **struct 可用**,class 不可
C++ 前綴/後綴 ++/-- 重載全解析:語法、語義、效能與一致性
C++ 通過**後綴形式多一個 int 參數**區分重載: UPInt& operator++(); // 前綴 const UPInt ope
More Effective C++:避免無意義的缺省構造函數
缺省構造函數(無參構造)能「無中生有」初始化對象。適合類數值類型、容器(空初始化),但**許多領域對象強制需外部數據**(如設備必須有公司 ID)。 無缺省構
C++ 類與接口設計原則:兼容性、封裝與演化的工業級準則
面向對象三大特性(封裝、繼承、多態)在 C++ 中由 class 承載。類設計質量決定系統質量。工業級要求:**二進制兼容**(無需重編譯換庫)與**源碼兼容*
C++ 最佳實踐:用 operator+= 實現 operator+,提升效能與一致性
用戶定義類型中,x = x + y 與 x += y 無自動關聯。**三大運算符(+、=、+=)互不相關,需手動實現一致性**。 推薦模式:單獨形式委託賦值形
C++ 內存管理變革:從 new/delete 到具備 GC 能力的 Allocator
C/C++ 內存管理經歷三次變革:malloc/free → new/delete(強類型) → allocator(STL 引入)。但 allocator 除
C/C++ 返回內部靜態成員的陷阱:以 inet_ntoa 為例的血淚教訓
函數需返回字符串時,三大策略:堆分配(調用者釋放,易漏/重釋)、調用者傳緩衝區(最安全)、返回內部 static 緩衝區(介面漂亮但暗藏殺機)。 經典陷阱:i
More Effective C++:考慮替換程序庫以提升效能
程序庫設計是妥協藝術:尺寸、速度、功能、靈活、可移植、直觀、無錯誤不可兼得。不同庫對同一功能的權衡不同,導致效能特徵迥異。 經典對決:iostream vs
VS2005 C++ 編譯器合規性變化:for 變量作用域、常量類型與 MFC 返回值
Visual Studio 2005 C++ 編譯器更嚴格遵循 C++ 標準,三大變化影響遷移: 1. for 循環控制變量作用域收斂 舊代碼允許循環外使用控
More Effective C++:效能優化的科學方法與 80-20 法則
效能非戲言:過大過慢的程序再優秀也無人接受。C++ 本身不導致效能問題,**寫高效 C++ 前,必先會寫高效程序**。高層演算法效率低時,微優化(循環展開、位移
面向未來的 C++ 程序開發:設計原則與長期演化策略
優秀軟件必須適應變化:新功能、新平台、新需求、新輸入。核心在於用 C++ 語言機制表達設計約束,而非靠註釋/文檔。 核心原則 阻止不當繼承:類若不設計為基類