【正确答案】
【答案解析】将引用作为函数返回值类型的格式如F所不:
类型标识符&函数名(形参列表及类型说明){∥函数体}
将引用作为返回值的优点是在内存中不产生被返回值的副本,从而大大提高了程序的安全性与效率。
具体而言,将引用作为函数返回值类型的格式一般需要注意以下4点内容:
1)不能返回局部变量的引用。局部变量由于存储在栈区,在函数返回后会被销毁,因此被返回的引用就成为了“无所指”的引用,程序会进入未知状态,引起程序错误甚至崩溃。
2)不能返回函数内部new分配的内存的引用。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成内存泄露。
3)可以返回类成员的引用,但最好是常引用类型。当对象的属性与某种业务规则相关联时,其赋值常常与某些其他属性或对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其他对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。
4)流操作符<<和>>。一般这两个操作符连续使用,因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。在另外的一些操作符中,不能返回引用+-*/四则运算符。由于这4个操作符没有副作用,因此它们必须构造一个对象作为返回值,可选的方案包括返回一个对象,返回一个局部变量的引用,返回一个new分配的对象的引用,返回一个静态对象引用。根据前面提到的引用作为返回值的3个规则,第2)、3)两个方案都被否决了。静态对象的引用又因为((a+b)==(c+d))会永远为true而导致错误,所以可选的只剩下返回一个对象了。