c++ - 我可以退回副本作为参考吗?
问题描述
我有一个返回对对象的 const 引用的虚拟方法。在其中一个派生类中,我需要返回一个值。使用 const 引用返回类型时是否可以返回副本?
这是我正在尝试做的(简化代码,因为它更复杂):
const Object& method(){
Object object;
//...
return object; //Wrong, returning reference to local variable.
}
我尝试以这种方式使用静态值:
const Object& method(){
static Object object;
object = Object();
//...
return object;
}
这是最简单的解决方案,但不是很优雅。
解决方案
我有一个返回对对象的 const 引用的虚拟方法。在其中一个派生类中,我需要返回一个值。
解决方案:更改您的设计,以便
- 返回类型不是引用或
- 派生类不需要返回值。
否则派生类不符合它继承的接口。
我可以退回副本作为参考吗?
您可以返回对作为另一个对象副本的对象的引用。但是您需要将对象(您返回其引用)存储在某处。
推荐阅读
- sql - 查询返回多个结果时按列限制 1?
- random-forest - 用于随机森林回归器参数调整的 GridSearchCV
- javascript - 在
“@material-ui/pickers”包的组件,有哪些可用的工具选项? - python - Django Rest Framework - 根据标头数据针对单个 URL 注册多个视图集
- java - 将 PaymentMethods 从平台克隆到关联账户
- ms-access - 粘贴追加粘贴空白单元格
- tree - 线性时间的 MST,边权重 {1 到 100}
- selenium - 从 Windows 计划任务以 SYSTEM 用户身份执行 Selenium 失败的原因
- r - 使用简单的 for 循环将状态名称与相应的状态编号匹配
- javascript - 使用“createElement”创建按钮时执行按钮的 onclick 属性