引用和指针的区别:
1、引用必须初始化,指向一个对象;指针可以只声明,可以指向NULL。
2、引用成为一个对象的别名之后,不能再改变;指针可以改变指向的地址。
3、没有引用的数组;数组可以存放指针。
4、不存在引用的指针,而有指针的引用。
引用的不可替代方面:
1、重载 = 、+= 运算符,必须返回引用,因为赋值运算符的返回值必须是一个左值,而且可以被连续赋值。
2、重载 [] 运算符,必须返回引用,因为需要返回左值。
3、重载流操作符必须返回引用,因为需要连续使用<< 、 >> 运算符。
必须不能使用引用的地方:
1、不能返回局部变量的引用
2、重载 + - * / 运算符,只能返回对象