我已经编程C,主要是在嵌入式环境中,多年来一直有一个非常好的指针心理模型 - 我不必明确考虑如何使用它们,我对指针算法100%舒适,数组指针,指针指针等.
我写了很少的C++,并且没有很好的思考引用的方法.我过去曾被告知"将它们视为不能为空的指针",但这个问题表明这远不是完整的故事.
因此,对于更有经验的C++程序员 - 您如何看待参考?你认为它们是一种特殊的指针,还是完全属于自己的东西?对于C程序员来说,理解这个概念的好方法是什么?
我不太喜欢"永远有效"的观点,因为引用可能变得无效,例如
int* p = new int(100);
int& ref = *p;
delete p; // oops - ref now references garbage
Run Code Online (Sandbox Code Playgroud)
所以,我认为引用是不可重新绑定的(也就是说,一旦它被初始化,你就不能改变引用的目标)带有语法糖的指针,以帮助我摆脱" - >"指针语法.
一般来说,你只是不考虑参考.除非您特别需要按值或指针魔术调用,否则在每个函数中都使用引用.
引用本质上是一直指向同一事物的指针.引用不需要解除引用,而是可以作为普通变量访问.这就是它的全部内容.当您需要执行指针算法或更改指针指向的内容时,可以使用指针,以及几乎所有其他内容的引用.