引用可以视为指针的语法糖。
你想想你用指针的时候怎么写代码呢?
foo(T* p)
if(p != NULL)
*p = ...; or p->x = ...;
//在这里你总是要担心p是否是 null 的问题。
而且指针很容易出现未初始化这种疏漏~。
而且给被指向对象赋值或者访问其数据的时候还需要 dereference ;
但是用引用,语言上就清爽了一些:
foo(T& p)
p = ...; or p.x = ...;
在底层上,上面的东西除了判断 null 实际上没区别。引用的实现
和指针在汇编级别相同(至少在 vc 是如此,我只看了 vc 的反汇
编代码)。
【 在 ilovecpp (cpp) 的大作中提到: 】
: 嗯,长知识了。我过去看到的类似场景都是用const pointer。reference的唯一区别可能是它non-null by convention。
--
修改:hoodlum FROM 211.95.56.*
FROM 211.95.56.*