首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 與 C 核心差異總結:從結構到類、繼承、多態、引用與異常

     編輯:關於C++

三大支柱:封裝、繼承、多態

  • 封裝:數據與操作綁定,private 隱藏細節,public 暴露介面。
  • 繼承:class Derived : public Base 實現 is-a 關係,復用代碼並支援多態。
  • 多態:虛函數 + 基類指針/引用,實現運行期動態綁定。

結構體 vs 類

成員訪問與 this 指針

  • 成員函數中同名參數會遮蔽成員變量,需用 this->member 訪問成員。
  • this 為 Class* const,指向調用對象,隱式傳遞給每個非靜態成員函數。

繼承細節

構造/析構順序

Base() → Member() → Derived()  // 構造
~Derived() → ~Member() → ~Base() // 析構

多重繼承與虛繼承

  • 多重繼承:按聲明順序構造基類。
  • 菱形繼承需 virtual 繼承,避免基類子對象重複;虛基類由最底層派生類直接構造。

多態關鍵點

  • virtual 函數表 (vtable) + vptr 實現動態分派。
  • dynamic_cast:運行期類型安全轉換,需 RTTI 支援,基類須有虛函數。
  • typeid:返回 type_info,支援類型比較與名稱查詢。
  • 純虛函數 =0 定義介面,構成抽象類。
  • 虛析構函數:基類指針刪除派生類對象必須虛析構,否則資源洩漏。

引用

  • 引用是變量別名,聲明時必須初始化,綁定後不可改變綁定對象。
  • 函數參數/返回值用引用避免拷貝,const T& 接受臨時對象。
  • 本質為指針常量,編譯器自動處理取址/解引用。

異常處理

try {
    // 可能拋出
    throw MyException("error");
} catch (const MyException& e) {
    // 處理
} catch (...) {
    // 捕獲所有其他異常
}
  • throw 拋出任意類型,catch 按類型匹配(派生類 catch 應置於基類前)。
  • 異常傳播:若當前作用域無匹配 catch,展開堆疊至上層調用者。
  • 函數異常規範 throw(TypeList) (C++11 棄用,改用 noexcept)。
  • 標準異常繼承自 std::exception,重寫 what()。

I/O 流

  • iostream 家族:istream/ostream → ifstream/ofstream/fstream、istringstream/ostringstream。
  • 格式化控制:setf/unsetf、操縱子 hex/dec/oct、setw/setfill/setprecision。
  • 文件流:open(mode)、read/write 二進制、seekg/seekp 定位。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性structclass
默認訪問權限publicprivate
默認繼承權限publicprivate
語義慣例純數據聚合 (POD)封裝行為與數據