函数内部栈上创建的临时变量、临时对象,生命周期只在函数运行期间,函数运行结束后,就会释放对应内存空间。
// 错误的函数写法
int& test1()
{
int x = 1;
return x;
}
// 错误的函数写法
int* test2()
{
int x = 1;
return &x;
}
// 正确常用的写法
int test3()
{
int x = 1;
return x;
}
对于越简单的类型,例如int类型,运行的效果就越可能不出问题,但是越复杂的类型,例如对象,不仅引用或者指针的内容会出现问题,而且甚至可能会出现编译都报错的情况。
所以不要抱有侥幸心理,老老实实,不要返回函数内部临时变量和对象的引用、指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)