我知道引用是语法糖,因此代码更容易读写.
但有什么区别?
以下答案和链接摘要:
NULL),而引用总是指对象.&obj + 5).澄清一个误解:
C++标准非常谨慎,以避免规定编译器如何实现引用,但每个C++编译器都将引用实现为指针.也就是说,声明如下:
Run Code Online (Sandbox Code Playgroud)int &ri = i;如果它没有完全优化,则分配与指针相同的存储量,并将地址
i放入该存储中.
因此,指针和引用都使用相同数量的内存.
作为基本规则,
有趣的读物:
我目前正在阅读Accelerated C++,我意识到我并不真正了解函数签名的工作原理.
int* ptr=#
Run Code Online (Sandbox Code Playgroud)
意味着ptr现在将地址保存为num,但这意味着什么?
void DoSomething(string& str)
Run Code Online (Sandbox Code Playgroud)
从我的理解,这是一个变量的引用传递(这意味着传递地址),但当我这样做
void DoSomething(string& str)
{
string copy=str;
}
Run Code Online (Sandbox Code Playgroud)
它创造的是str的副本.我认为它会做的是引发错误,因为我正在尝试分配一个指向变量的指针.
这里发生了什么?在函数调用中使用*和&是什么意思?