引用做返回值
int& Count()
{
static int n = 0;
n++;
// ...
return n;
}
我们先看看下面代码会输出什么结果?...,所以这是一个未定义行为,输出结果是不确定的。...答案思考:
在Visual Studio上运行这段代码,输出结果是:
Add(1, 2) is :7
这个结果确实是未定义行为,但在某些情况下可能会输出7。...之所以会出现这种情况,是因为Visual Studio的编译器在处理这种未定义行为时可能会做一些特殊的优化或处理,导致在某些环境下能够得到一个看似合理的结果。...但这种行为是不可靠的,因为它依赖于具体的编译器实现细节。在不同的编译器或环境下,输出可能会完全不同。
正确的做法:是要么返回值,要么返回一个在调用者作用域内仍然存在的对象的引用。