c++ - 如何在 C++ 中创建临时变量
问题描述
我有一个函数返回对我的类“记录”实例的引用。
record& get_record(int key) {
return lookup(key);
}
这是有效的,它返回一个引用而不是按值。现在我稍微修改一下。
record& get_record(int key) {
if (valid(key))
return lookup(key);
else {
record x;
x.valid=false;
return x; //Here I really want to return a temporary variable
// and not a reference to a local variable.
}
}
返回对局部变量的引用不是一个好主意是否正确?以及如何以使其成为临时变量的方式返回 x?
解决方案
返回对局部变量的引用不是一个好主意是否正确?
是的。退出函数时,本地对象将被销毁,因此返回的引用始终是悬空的。
你可能会做x
一个static
变量。
record& get_record(int key) {
if (valid(key))
return lookup(key);
else {
static record x;
x.valid=false;
return x;
}
}
请注意,返回的引用将始终引用同一个对象,即x
.
推荐阅读
- excel - 如何在不移动相邻列数据的情况下对多列列表进行排序
- sql-server - 如何查看所有表格的大小
- bash - 从字符串 JQ 的一部分中删除双引号
- visual-studio-code - 如何让 Visual Studio Code 提示在新窗口中打开文件夹
- kendo-ui - 为什么单击提交时kendoForm会触发两次?
- python - 在 for 循环之后维护 3D 列表中的维度
- c# - 在本地动态 365 v8.2 中调试自定义工作流活动
- c++ - 朋友运算符<<在模板类中重载?
- sql - Power Query 基于 ID 列表筛选记录
- arrays - 想要将非字母字符传递给 C 中的数组但遇到分段错误