0

我还没有完全理解 C++ 中的引用传递。我已经阅读了以下相关问题。

但是即使我理解它与指针不同,我也没有完全理解 C++ 中引用的概念。它是如何工作的?我似乎引用是指针的一种特殊情况,并且可能由编译器实现。但它在编程级别上表现不同。那是对的吗?

通过引用传递的概念是传递指向该值的指针的特殊情况吗?很多时候我必须在编程时决定是使用引用还是使用指针。此外,我想了解基本原理。只复制内存地址吗?

4

2 回答 2

3

引用是具有一些特殊限制的指针。绝不能未初始化引用。创建引用时,它必须指向某物。当需要一个不为 NULL 的“指针”时,这很有用。

此外,引用不能更改其保存的地址,因此它是一个常量指针。

它有一些很好的语法糖,允许它使用点运算符,使其在从按值代码更改为按引用代码时很有用。

实际上,在函数中使用引用作为参数或返回值通常表示“按地址,不能为 NULL,并且必须是有效对象”。相反,使用指针通常表示“可能为 NULL,因此必须处理 NULL”。通过指针还允许指针算术和操作。

假设您都了解两者,那么您应该使用的确实是您最喜欢的。我自己更喜欢指针。

编辑:正如这里的评论所指出的,您不能直接获取引用的地址,因为它将返回引用所指的地址。这是另一个不适用于平均指针的限制。

于 2013-04-30T21:05:02.673 回答
0

是的,它本质上与指针相同,但它是一个更好、更安全的版本,因为指针地址不能更改或设置为空。我认为它主要是一种拥有漂亮的函数接口的方法,而不需要接口的用户担心指针 - 即函数保持简单但对象没有被复制,纯粹是它的地址。类复制构造函数是引用至关重要的一个主要例子。

于 2013-04-30T21:07:37.310 回答