舉一個簡單的例子 int & B(int &n) { n++; return n; } int main() { int a = 10; int & b = B(a); // 調用 B, 傳遞的是 a 的引用 // 到了 B 裏, n 就是指 a, // return n; 就相當是 return a; // 返回到 b 的就是 a 的引用, b 就是 a // 對 n 和 b 的操作會直接影響 a, 因爲它們是同一個東西. cout << b << endl; cout << a << endl; } ---------------------------------- 對於 int A(int n) { return n; } 這裏如果是 int c = A(a); 這樣調用, n 不是 a, 而是一個 a 的副本 (複製值) 返回的只是一個值"副本", 沒有引用任何東西, 對於原始的 a 沒有任何影響 C++中,返回引用是一个比较晦涩的概念。在书中,对此仅仅做了一个一般的介绍,并没有展开。我觉得有必要对此进行一定的展开。 (1)首先,返回引用,要求在函数的参数中,包含有以引用方式或指针方式存在的,需要被返回的参数。比如: int& abc(int a, int b, int c, int& result){ result = a + b + c; return result; } 这种形式也可改写为: int& abc(int a, int b, int c, int *result){ *result = a + b + c; return *result; } 但是,如下的形式是不可以的: int& abc(int a, int b, int c){ return a + b + c; } ( 2) 由 于 返 回 值 直 接 指 向 了 一 个 生 命 期 尚 未 结 束 的 变 量 , 因 此 , 对 于 函 数 返 回 值 ( 或 者 称为 函 数 结 果 ) 本 身 的 任 何 操 作 , 都 在 实 际 上 , 是 对 那 个 变 量 的 操 作 , 这 就 是 引 入 const 类 型的 返 回 的 意 义 。 当 使 用 了 const 关 键 字 后 , 即 意 味 着 函 数 的 返 回 值 不 能 立 即 得 到 修 改 ! 如 下 代 码 , 将 无 法 编译 通 过 , 这 就 是 因 为 返 回 值 立 即 进 行 了 ++操 作 ( 相 当 于 对 变 量 z 进 行 了 ++操 作 ), 而 这 对 于该 函 数 而 言 , 是 不 允 许 的 。 如 果 去 掉 const, 再 行 编 译 , 则 可 以 获 得 通 过 , 并 且 打 印 形 成 z = 7 的 结 果 。 include include...