观察下面的错误代码,函数的返回值是值类型,在外面接收返回值时,使用引用类型。
CTest getTest()
{
CTest t;
return t;
}
CTest& test = getTest();
在vs2017里面,这样写代码竟然在编译阶段不报错,而且运行也正常。在 xcode 的编译器下,直接会报错不能用引用类型,来接收值类型的参数。
这种写法,语意上,有一种“接收了局部变量的引用”的感觉。即使能够编译通过,总觉得会有潜在的风险。还是在编译阶段能够检查出来是最好的。
这种写法算是个陷阱,记录在此,以后一定注意。