Is通过引用传递是作为指针传递的一种特殊情况
Is passing by reference is a special case of passing as pointer?
我还没有完全理解c++中的引用传递。我已经读过以下相关的问题。
- c++中指针变量和引用变量的区别是什么? 在c++中,通过指针传递比通过引用传递有好处吗?
- 何时使用引用与指针
但是即使我知道它与指针不同,我也不完全理解c++中引用的概念。它是如何工作的?引用似乎是指针的一种特殊情况,可能由编译器实现。但在编程层面上表现不同。对吗?
通过引用传递的概念是传递指向该值的指针的特殊情况吗?很多时候,我不得不决定是使用引用还是指针,而编程。此外,我想了解其基本原理。只复制内存地址吗?
引用是具有一些特殊限制的指针。引用永远不能被反初始化。当创建引用时,它必须指向某些东西。当想要一个不为NULL的"指针"时,这很有用。
此外,引用不能改变它所保存的地址,因此它是一个常量指针。
它有一些不错的语法糖,允许它使用点运算符,使它在从按值代码更改为按引用代码时非常有用。
在实践中,在函数中使用引用作为参数或返回值通常表示"按地址,不能为NULL,必须是一个有效对象"。使用指针通常表示"可能是NULL,所以必须处理NULL"。By指针还允许指针运算和操作。
你应该使用的是你觉得最舒服的,假设你理解了这两种语言。我自己更喜欢指针。
编辑:正如在这里的注释中指出的那样,您不能直接获取引用的地址,因为它将返回引用所引用的地址。这是另一个不适用于平均指针的限制
是的,它本质上与指针相同,但一个更好和更安全的版本,因为指针地址不能更改或设置为空。我认为它主要是一种拥有漂亮的函数接口的方法,而不需要接口的用户担心指针——即函数保持简单,但对象不被复制,只是它的地址。类复制构造函数是引用至关重要的一个典型例子。
相关文章:
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小/最大值?
- 在C++中,有没有一种方法可以让我在不传递参数的情况下拥有一个函数
- 有没有一种方法可以在不设置精度的情况下设置小数位数
- 有没有一种方法可以在不复制数据的情况下从string_view创建字符串流
- 是否有一种设计模式或面向对象的基本原则来处理这种共享资源的情况?
- free():仅在一种情况下指针无效
- C++ 在一种特定情况下替代无效*
- 有没有一种很好的方法来实现具有默认失败情况的条件类型?
- 为什么在一种情况下,我会收到带有字符串文字的已弃用转换警告,而在另一种情况下却没有?
- 我如何仅在一种情况下或某些情况下专业攻击效果
- 空格很重要的另一种情况(也许?
- 为什么模板参数只能在一种情况下推导
- C++为什么在一种情况下保存到文件有效,而另一种情况则无效
- 在一种情况下调用构造函数的顺序C++
- C++ 开关结构(运行最后一种情况两次)
- 如何在一种情况下实现具有显著不同实现的类
- 是否有一种情况,可变函数应该优先于可变模板
- 为什么在头文件中使用私有内部类作为参数会出错,而在另一种情况下在调用函数中会出错?
- 为什么在一种情况下模板参数需要volatile,而在另一种情况下不需要