请问一个关于引用的有关问题,多谢
请教一个关于引用的问题,谢谢
在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用,Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。
请问一下 静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误 这句话咋理解,谢谢!!!
------解决方案--------------------
(a+b) == (c+d)
因为静态对象只有一个,那么(a + b) 和 (c + d) 返回的都是同一个对象,作==操作时自然为true
------解决方案--------------------
你在一个函数中定义多个静态变量,那你返回引用的时候怎么确定返回哪个?实现加法,为了能够不互相影响,难道你要定义n个静态变量?
在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用,Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。
请问一下 静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误 这句话咋理解,谢谢!!!
------解决方案--------------------
(a+b) == (c+d)
因为静态对象只有一个,那么(a + b) 和 (c + d) 返回的都是同一个对象,作==操作时自然为true
------解决方案--------------------
你在一个函数中定义多个静态变量,那你返回引用的时候怎么确定返回哪个?实现加法,为了能够不互相影响,难道你要定义n个静态变量?