仔细区别pointers(指针)和references(引用).
首先,必须认识一点,没有所谓的null reference。一个reference必须总代表某个对象。
所以如果你有一个变量,其目的是用来指向另一个对象,但是也有可能它不指向(代表)任何对象,那么就应该使用pointer,因为可以将pointer设置为null.
如果一个变量总是必须代表一个对象,如果设计不允许这个变量为null,那么你应该使用reference。
reference必须有初值。指针没有这样的限制。
pointers可以被重新赋值,指向了另一个对象,reference总是指向它最初获得的那个对象。
总结:当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是当你实现一个操作符而其语法需求无法由pointers达成,你就应该选择references,任何其他时候,请采用pointers。
- 引用为对象的别名。引用不可以为空,但指针可以为空。定义一个引用时,必须初始化。
- 引用不可以改变指向,但指针可以改变指向,而指向其他对象。
- 引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。
- 引用比指针更安全。