C++ 引入引用 &,與 C 指針 * 共存易混淆。建議:
new T → delete pnew T[N] → delete[] pdelete[],否則僅析構首元素,其餘泄漏。T* p1 = new T[3]; delete p1; // 錯:只析構 p1[0] T* p2 = new T[3]; delete[] p2; // 正確:析構全部
C 無默認參數,可用宏 + __VA_ARGS__ 實現多重載效果:
#define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)
雖繁瑣但可移植,適合庫設計。
GCC 早期擴展與 C99 標準 inline 語義不同(鏈接屬性),跨編譯器需謹慎。
同名不同參數表,編譯器按實參匹配。C with Class 不使用,因增加編譯期複雜度。
template
非 OOP,屬泛型編程范式,代碼復用性極高。C with Class 不涉足。