【发布时间】:2017-03-13 13:33:16
【问题描述】:
我定义了这个函数:
template <typename T>
void foo (T &result){
//some very complicate stuff
result = //something
}
现在,假设有时我想用T=int 调用它,在其他情况下用T=std::string 调用它。因此,在第二种情况下,标头是有效的,但带有 T=int this is inefficient。请注意,我仅使用这两种类型作为示例。
所以更好的解决方案是定义另一个函数:
template <typename T>
T foo(){
T result;
//some very complicate stuff
return result;
}
并且让用户决定调用哪个版本,但是我们如何避免在函数中调用//some very complicate stuff的整个代码呢?
【问题讨论】:
-
对整数引用进行操作效率相对较低,但成本并不高。只是因为复制一个整数也很便宜。
标签: c++ return pass-by-reference pass-by-value