Eclipse 3.06 + MinGW 3.1 打造標準 C/C++ 開發環境完整指南
前言 除商業 IDE(Visual Studio、C++ Builder)外,Eclipse + MinGW 是免費、跨平台、可高度客製化的 C/C++ 開發組
C++ 多態與虛函數詳解:從靜態綁定到動態分派
多態為何物? 封裝、繼承、多態是面向物件三大支柱。單純支援類別不代表支援面向物件(如 VB6);唯有解決多態問題的語言才是真正的 OOP 語言。多態讓程式在執行
C++ 類繼承機制圖解:從單一繼承到建構/解構順序
繼承核心概念 繼承讓衍生類(子類)取得基類(父類)的資料結構與操作,只需補充新特性即可。例如「交通工具」為基類,擁有速度、載人數;「汽車」與「飛機」繼承這些共性
C++ 友元函數與友元類深度解析:突破封裝的雙刃劍
為什麼需要友元? 在 C++ 中,類的封裝特性禁止外部函數直接存取私有或受保護成員。若要讓普通函數存取這些資料,傳統做法是將成員宣告為 public,但這會導致
C++ 靜態成員完整指南:類別層級資料共享、單例模式與計數器模式
靜態成員:屬於類別,不屬於物件 static 修飾的成員變數/函數:**不屬於任何具體物件**,屬於類別本身,全程式僅有一份拷貝,儲存於全域/靜態資料區。 靜
C++ 拷貝建構子深度解析:淺拷貝 vs 深拷貝、暫時物件與無名物件
拷貝建構子:物件複製的守門員 當用**已初始化物件初始化新物件**時呼叫: T b = a; (複製初始化) T b(a); (直接初始化) 傳值參數、傳值回
C++ 物件導向抽象實戰:約瑟夫斯問題的三種解法對比
問題描述:約瑟夫斯環 N 個小孩圍成一圈,從 1 開始報數,報到 M 的小孩出列,剩餘小孩繼續報數,直到剩最後一人獲勝。輸入 N, M,輸出獲勝者編號。 解法
C++ 建構子與解構子深度解析:物件生命週期、初始化清單與資源管理
建構子:物件誕生的守門員 C++ 規定:**每個類別必須有建構子**。若未提供,編譯器自動產生預設建構子(無參數、不初始化成員)。一旦自訂任何建構子,預設建構子
C++ 類別入門:從結構體到物件導向,封裝、存取控制與作用域
類別:結構體的進化 C++ class 與 struct 唯一語法差異:**預設存取層級**。class 預設 private,struct 預設 public
C/C++ 結構體完整指南:定義、成員存取、指標、傳遞效能與巢狀結構
結構體 vs 陣列:關鍵差異 特性陣列結構體 資料型別單一型別可包含多種型別 是否為型別否(衍生型別)是(使用者定義型別) 變數指派不可 a = b可
C++ 參考(Reference)深度解析:別名機制、回傳值優化與左值特性
參考的本質:變數的別名 宣告 int &rn = a; 使 rn 成為 a 的別名,不佔用額外記憶體,&rn == &a 恆成立。參考必
C/C++ 函數指標完整指南:宣告、呼叫、陣列與回呼實戰
函數指標基礎:函數也有位址 函數編譯後位於程式碼區,擁有入口位址。函數名稱在大多數語境下退化為函數位址,型別為「函數指標」。 宣告語法陷阱 int test
C/C++ 指標的指標與字串指標陣列:從記憶體模型徹底理解雙重間接尋址
核心概念:指標的指標 指標變數儲存位址,而「指標的指標」儲存的是另一個指標變數的位址。宣告語法:型別 **變數名,例如 char **pp。 記憶體佈局圖解
C/C++ 命令列參數完整解析:argc/argv 原理與實戰技巧
main 函數的完整簽名 標準 C/C++ 允許 main 接受參數: int main(int argc, char *argv[]) // 等價於 int
C++ 堆積記憶體管理全攻略:malloc/free 與 new/delete 深度對比
為什麼需要動態記憶體? 靜態陣列大小必須編譯期確定,但實務上常需依執行期輸入決定資料量。堆積記憶體提供執行期動態配置、釋放的能力,生命週期由程式設計師完全掌控。
C/C++ 字串常量比較陷阱:為什麼 "test" == "test" 可能為假?
令人驚訝的現象 if (test == test) cout << 相等; else cout << 不相等; //
C/C++ 陣列與指標的深層關係:從記憶體佈局理解指標運算
核心觀念:陣列名稱即首元素位址 宣告 int a[] = {1, 2, 3, 4}; 時,a 在大多數語境下退化為指向首元素的指標,型別為 int*,等價於 &
C++ 內聯函數深度解析:inline 關鍵字如何消除函數呼叫開銷
為什麼需要內聯函數? 頻繁呼叫小型函數會帶來堆疊框架建立、參數壓棧、跳轉指令等額外開銷。當這類函數在迴圈中被呼叫成千上萬次,效能損失顯著。C++ 引入 inli