C++ 引用的根本用法

[复制链接]
发表于 2025-12-1 22:57:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
通过使用引用,可以创建该对象的另一个名字,而不会引入额外的内存开销。引用在函数参数转达、返回值以及制止拷贝大型对象时特别有效。
引用的根本用法

创建引用:
引用必须在创建时被初始化,且一旦被绑定到一个对象后,就不能再改变为引用其他对象。
  1. int a = 10;
  2. int& ref = a;  // ref 是 a 的引用
复制代码
通过引用访问对象:
使用引用就像使用被引用的对象自己一样。
  1. ref = 20;  // 相当于 a = 20
  2. cout << a << endl;  // 输出 20
  3. cout << ref << endl;  // 输出 20
复制代码
引用常见用途

函数参数

 使用引用作为函数参数,可以制止拷贝大型对象,同时答应函数修改传入的对象。
  1. void modifyValue(int& x) {
  2.     x = 5;
  3. }
  4. int main() {
  5.     int a = 10;
  6.     modifyValue(a);
  7.     std::cout << a << std::endl;  // 输出 5
  8.     return 0;
  9. }
复制代码
函数返回值

使用引用作为函数返回值时,可以制止返回大型对象的拷贝,但必要注意制止悬挂引用(dangling reference)。
  1. int& findValue(int arr[], int size, int value) {
  2.     for (int i = 0; i < size; ++i) {
  3.         if (arr[i] == value) {
  4.             return arr[i];
  5.         }
  6.     }
  7.     // 注意:这里需要处理找不到值的情况,否则会返回悬挂引用
  8.     static int notFound = -1;
  9.     return notFound;
  10. }
  11. int main() {
  12.     int arr[] = { 1, 2, 3, 4, 5 };
  13.     int& ref = findValue(arr, 5, 3);
  14.     cout << ref << endl;  // 输出 3
  15.     return 0;
  16. }
复制代码
悬挂引用:返回局部变量的引用会导致悬挂引用,由于局部变量在函数返回后会被烧毁。
常量引用 

使用常量引用作为函数参数可以制止拷贝(值转达),同时包管被引用的对象不会在函数中被修改。
  1. void printValue(const int& x) {
  2.     std::cout << x << std::endl;
  3. }
  4. int main() {
  5.     int a = 10;
  6.     printValue(a);
  7.     return 0;
  8. }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表