嗯,因为b是temp的引用。也就是说b是temp的别名。b和temp代表同一个内存地址。所以修改b就是修改temp。
另外,那个fn2函数的编写风格是很不好的。如果没有声明全局的temp,而是在函数的内部声明一个temp变量的话,LZ就会出错了。
C++编程原则:不要返回一个局部对象的引用,也不要返回一个指向局部对象的指针。
因为temp是全局变量所以LZ的写法没有问题。但一旦temp不是全局变量的话......
C++编程原则:在无法返回对象的引用的时候,请返回对象。
当然在LZ的问题中也可以多定义一个引用形参,返回应用形参的话就没问题。
因为 b 是一个引用,相当于指针指向 temp ,所以修改 b 实际上是修改 temp
不太可能吧,temp是一个全局变量,应该和a,b的值变成一样的了