C++ 的引用

基本用法

// 基本数据类型的应用
int nA = 10;
int& rA = nA; // rA 是 nA 的引用
double dB = 2.8;
double& rB = dB; // rB 是 dB 的引用

// 常量的引用
const int& nC = 12; // 常量是不能被修改的,nC 就是常量 12

// 数组的引用(确切的说是数组指针的引用)
int nArr1[5];
// 一维数组的引用,rArr1 是 nArr1 的别名,用法跟 nArr1 一样
int (&rArr1)[5] = nArr1;

int nArr2[2][3];
// 二维数组的引用,rArr2 是 nArr2 的别名,用法也是一样的
int (&rArr2)[2][3] = nArr2;

// 指针的引用
int nD = 10;
int* pD = &nD;
// rD 是 pD 的引用,它们的操作是一样的,rD 是 pD 的另一个名字
int* (&rD) = pD;

// 结构体的引用
struct Node {
    int nVal;
    double dVal;
}node = {10, 8.5};

Node &referNode = node; // referNode 是 node 的引用

// 类的引用
class CTest {
private:
  int nVal;
  double dVal;
public:
  CTest(int n, int d) :
      nVal(n),
      dVal(d)
      { }
};

CTest test(10, 8.5);
CTest& rTest = test;

引用作形参 & 返回值

#include <iostream>

using namespace std;

int& fun(int& a) {
  a += 2;
  return a;
}

int main() {
  int nA = 6;
  int& nB = fun(nA);
  cout << &nA << "===" << nA << "  " << &nB << "===" << nB << endl;
  system("pause");
  return 0;
}

引用和指针的区别

Table of Contents