C++ 組合優於私有繼承:設計原則與例外
組合 vs 私有繼承 兩者均表達「has-a / implemented-in-terms-of」關係。優先選擇組合(composition),原因如下: 組
C++ 虛擬函式預設參數陷阱與正確用法
核心問題 虛擬函式為動態綁定(執行期決定),預設參數為靜態綁定(編譯期決定)。若基類別虛擬函式有預設參數,派生類別覆寫時不要重新定義預設參數,否則會出現「基類別
Windows 程式設計:啟動 EXE 程式(C++)
核心 API CreateProcess(或 CreateProcessA/W)建立新程序。需填寫 STARTUPINFO 指定視窗顯示狀態。 程式碼 /*
Windows 程式設計:遍歷所有執行中程式(C++)
程式碼 /* main.cpp * Created on: 2014.06.08 * Author: Spike */ #include <iost
Windows 程式設計:終止指定 EXE 程式(C++)
步驟 遍歷程式快照,比對名稱取得 PID。 OpenProcess(PROCESS_TERMINATE, FALSE, pid) 取得控制代碼。 Termin
Windows 程式設計:遍歷程式載入的 DLL(C++)
流程 建立程式快照(TH32CS_SNAPPROCESS),比對程式名稱取得 PID。 以 PID 建立模組快照(TH32CS_SNAPMODULE)。 遍歷
Windows 程式設計:啟動/終止/遍歷程序與模組(C++ 類別封裝)
類別設計 封裝四項功能:啟動程式、遍歷所有程式、終止程式、遍歷程式載入的 DLL 模組。使用 Toolhelp32 API(CreateToolhelp32Sn
C++ 使用 CryptoAPI 建立自簽名憑證
CryptoAPI 架構概覽 Microsoft CryptoAPI 提供三層架構:應用程式層、作業系統層、密碼服務提供者(CSP)層。核心功能包含基本加密、憑
C++ 高效讀取整個文字檔至 string
最高效做法 以二進位模式開啟檔案(std::ios::binary)。 seekg(0, end) 取得檔案大小。 resize() 預分配字串空間。 see
C++ 使用 std::copy 列印容器元素
技巧 利用 std::ostream_iterator 將容器元素直接輸出至串流,替代手寫迴圈。 程式碼 /* main.cpp * Created on:
C++ 容器元素複製:std::copy 與 std::copy_n
函式簽名 OutputIterator copy(InputIterator first, InputIterator last, OutputIterator
C++ string 轉 int:C 風格 vs C++11 標準庫
C 風格 std::string str = "123"; int i = atoi(str.c_str()); // 需包含 <cs
C++ 隨機數:常態分布(normal_distribution)詳解
常態分布 以平均值 mean 與標準差 stddev 為參數,機率密度函數為鐘形曲線。廣泛應用於自然現象模擬、金融建模、誤差分析等。 程式碼示範:繪製直方圖