C++里的引用返回值

2024-11-09 03:21:48
推荐回答(3个)
回答(1):

嗯,因为b是temp的引用。也就是说b是temp的别名。b和temp代表同一个内存地址。所以修改b就是修改temp。
另外,那个fn2函数的编写风格是很不好的。如果没有声明全局的temp,而是在函数的内部声明一个temp变量的话,LZ就会出错了。

C++编程原则:不要返回一个局部对象的引用,也不要返回一个指向局部对象的指针。
因为temp是全局变量所以LZ的写法没有问题。但一旦temp不是全局变量的话......

C++编程原则:在无法返回对象的引用的时候,请返回对象。
当然在LZ的问题中也可以多定义一个引用形参,返回应用形参的话就没问题。

回答(2):

因为 b 是一个引用,相当于指针指向 temp ,所以修改 b 实际上是修改 temp

回答(3):

不太可能吧,temp是一个全局变量,应该和a,b的值变成一样的了