background image

}
⋯
int n = 0;
Func2(&n);
cout << “n = ” << n << endl; // n = 10

    

以下是 引用传递 的示例程序。由于 Func3 函数体内的 x 是外部变量 n 的

引用,x 和 n 是同一个东西,改变 x 等于改变 n,所以 n 的值成为 10.

 void Func3(int &x)
{
x = x + 10;
}
&#8943;
int n = 0;
Func3(n);
cout << “n = ” << n << endl; // n = 10

对比上述三个示例程序,会发现 引用传递 的性质象 指针传递 ,而书写方

式象 值传递 。实际上 引用 可以做的任何事情 指针 也都能够做,为什么还

要 引用

    这东西?

    

答案是 用适当的工具做恰如其分的工作 。

    指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非
常危险。

    就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?

    

如果的确只需要借用一下某个对象的 别名 ,那么就用 引用 ,而不要用

指针 ,以免发生意外。比如说,某人需要一份证明,本来在文件上盖上公章

的印子就行了,如果把取公章的钥匙交给他,那么他就获得了不该有的权利。

    ——————————

    摘自「高质量 c++编程」

    指针与引用,在 More Effective C++ 的条款一有详细讲述,我给你转过

    条款一:指针与引用的区别

    

指针与引用看上去完全不同(指针用操作符 *’ ‘

和 ->’,引用使用操作符

‘ ’

。),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。

你如何决定在什么时候使用指针,在什么时候使用引用呢?