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

C++ 我想這樣用(五):面向過程 vs 面向對象、引用、new/delete、默認參數、inline、重載、模板

     編輯:C++ 入門

1. 引用 vs 指針

C++ 引入引用 &,與 C 指針 * 共存易混淆。建議:

  • C++ 程式員:善用引用,避免裸指針。
  • C 程式員:堅持指針,不碰引用(C with Class 風格)。

2. new/delete 配對原則

  • new T → delete p
  • new T[N] → delete[] p
  • 類對象數組必須用 delete[],否則僅析構首元素,其餘泄漏。
T* p1 = new T[3]; delete p1;   // 錯:只析構 p1[0]
T* p2 = new T[3]; delete[] p2; // 正確:析構全部

3. 默認參數的 C 模擬

C 無默認參數,可用宏 + __VA_ARGS__ 實現多重載效果:

#define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)

雖繁瑣但可移植,適合庫設計。

4. inline 與 C99 差異

GCC 早期擴展與 C99 標準 inline 語義不同(鏈接屬性),跨編譯器需謹慎。

5. 函數重載

同名不同參數表,編譯器按實參匹配。C with Class 不使用,因增加編譯期複雜度。

6. 函數模板 = 泛型編程

template T abs(T x) { return x<0?-x:x; }
非 OOP,屬泛型編程范式,代碼復用性極高。C with Class 不涉足。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved