【发布时间】:2011-02-25 17:15:49
【问题描述】:
我提出了一个非常简单的问题,但不幸的是我自己想不出答案。
假设我有一些数据结构来保存设置并像设置映射一样工作。
我有一个GetValue(const std::string& name) 方法,它返回相应的值。
现在我想弄清楚 - 哪种返回值方法会更好。显而易见的意思是让我的方法表现得像
std::string GetValue(const std::string& name) const
并返回对象的副本并在性能上依赖 RVO。
另一种意味着制作两种方法
std::string& GetValue(...)
const std::string& GetValue(...) const
这通常意味着复制代码或使用一些邪恶的常量强制转换来两次使用这些例程之一。
#Q
在这种情况下你会怎么做?为什么?
【问题讨论】:
-
它们甚至在语义上都不相同 - 你应该只离开
const std::string& GetValue(...) const,除非你想让事情变得非常丑陋...... -
这个问题没有任何意义。您是否将从类中的函数
GetValue返回的内容的副本存储为成员?如果不是,那么只有一种选择:按值返回std::string。
标签: c++ reference return-value return-value-optimization