引用肯定会指向一个对象,在 C++里,引用应被初始化.
不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高.因为在使用引用之前不需要测试它的合法性。 相反,指针则应该总是被测试,防止其为空.
指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象.但是引用则总是指向在初始化时被指定的对象,以后不能改变.
总的来说,在以下情况下你应该使用指针,一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),二是你需要能够在不同的时刻 指向不同的对象(在这种情况下,你能改变指针的指向).如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用.
还有一种情况,就是当你重载某个操作符时,你应该使用引用。最普通的例子是操作符[].这个操作符典型的用法是返回一个目标对象,其能被赋值.
当你知道你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针.而在除此之外的其他情况下,则应使用指针.