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

More Effective C++:指針與引用的區別與選擇指南

     編輯:關於C++

核心差異

特性指針引用
可為空是 (nullptr)否,必須綁定對象
初始化可延後聲明時必須初始化
重新綁定可隨時指向新對象終生綁定初始對象,不可改變
語法*p, p->.(像直接操作對象)

選擇準則

  • 用指針:變量可能不指向任何對象(需空值);需要在不同指向間切換。
  • 用引用:變量始終指向某對象且不再改變指向。

效率考量

引用無需空值檢查,代碼更簡潔高效:

void printDouble(const double& rd) { cout << rd; } // 無需檢查
void printDouble(const double* pd) { if(pd) cout << *pd; } // 必須檢查

運算符重載必用引用

如 operator[] 返回可賦值目標:

vector<int> v(10);
v[5] = 10; // 返回引用,語法自然
// 若返回指針:*v[5] = 10; 易誤解為指針容器

危險警示

char *pc = 0;
char& rc = *pc; // 未定義行為!引用綁定空指針解引用

若擔心此類濫用,寧可全用指針,或提升團隊代碼審查標準。

總結

  • 引用是「別名」,語義更清晰、效率更高,但缺乏靈活性。
  • 指針提供空值語義與重新綁定能力,適用於可選、可變指向場景。
  • 運算符重載、拷貝構造/賦值參數、流操作符等標準慣用場景強制使用引用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved