C++ const 關鍵字全方位指南:替代 #define 的類型安全常量
為何選擇 const 而非 #define? #define 純粹是預處理器文字替換,無型別檢查、無作用域、難以除錯。const 是 C++ 語言層面的常量,提
C++ 物件大小深度剖析:空類、虛函數、虛繼承的記憶體佈局
實驗環境與基礎認知 測試環境:32 位元 Windows(指標大小 4 位元組)。 核心原則:空類大小為 1(確保不同物件擁有獨特位址),虛函數引入 vptr,
C++ 返回值機制深度解析:從副本到引用的生命週期管理
返回值的本質:副本機制 函數返回時,會建立臨時變數儲存返回值,呼叫端接收的是這個副本。原函數內的區域變數隨棧幀銷毀,因此: 返回值傳遞: 回傳副本,原物件已銷
融合 XML 文件註解與 PDB 符號:打造完整的 C++ 文件生成管線
核心痛點:原生 C++ XML 文件的缺陷 啟用 Generate XML Documentation Files 後,編譯器產出的 XML 僅含註解文字與符號
開發免安裝 VS 的 PDB Dumper:基於 msdia100.dll 的無註冊 COM 呼叫
問題起因:C++ XML 文件缺乏型別資訊 Visual Studio 原生 C++ 支援 XML 文件註解,但生成的 XML 僅包含註解內容與符號名稱,缺少型
GacUI 實戰:打造 PDB Viewer 實現 C++ 反射機制
專案背景與動機 GacUI 框架為了支援介面的 XML 序列化與反序列化,急需類似 .NET 反射的功能。然而 C++ 原生缺乏反射機制,開發團隊另闢蹊徑——利
MFC 實作啟動畫面:CSplashWnd 完整教學
需求 應用程式啟動時顯示 Logo 圖片(Splash Screen),數秒後自動消失,進入主視窗。 步驟概覽 準備位圖資源(如 500×313),資源 I
第一個 MFC 程式:SDI 架構、訊息映射、虛函式與預編譯標頭
建立 SDI 專案步驟 Visual Studio → 新增專案 → MFC Application → 單一文件介面 (SDI)。 專案名稱:3SDI。
C/C++ 字串格式化防止陣列越界:_snprintf 最佳實踐
問題 使用 sprintf 格式化字串時,若輸出長度超過緩衝區大小,會導致緩衝區溢位,造成未定義行為或安全漏洞。 解決方案:_snprintf / _snpr
Windows API 程式設計基礎:核心 DLL、常用函數與實戰範例
什麼是 Windows API Windows 作業系統透過應用程式開發介面(API)向程式設計師提供底層服務。所有 MFC、ATL、WTL 等類別庫最終皆封裝
設計模式六大原則:依賴倒置原則(DIP)實戰解析
定義 High level modules should not depend upon low level modules. Both should dep
C++ 預定義宏 __FILE__、__LINE__ 等完整指南
標準預定義宏 C/C++ 標準定義以下預處理器宏,預處理階段自動展開: 宏展開結果說明 __FILE__字串常數當前原始檔名稱 __LINE__整數常數當前
使用 DOS 重導向技術在 VC++ 中呼叫 isqlw 執行 SQL 腳本
需求背景 專案需在後台無介面模式下呼叫 SQL Server 的 isqlw(SQL 查詢分析器),執行腳本並取得輸出結果。採用 DOS 管道重導向技術,從 V
為 Lua 建構沙盒環境:使用 setfenv 實現權限隔離
背景 Lua 本身不具備 C++/Java 風格的成員存取控制,但提供 setfenv 函數,可靈活設定函數的執行環境(環境表),從而實現沙盒機制,限制腳本存取
設計模式六大原則:單一職責原則(SRP)實戰指南
定義 There should never be more than one reason for a class to change. 一個類別應該有且僅有