很抱歉这个令人困惑的标题,如果这是重复的话我很抱歉(我尝试在线搜索答案),希望这个例子可以清除它:
基本上,这样做会更好:
void fill(vector<int> & v);
int main() {
vector<int> v;
fill(v);
return 0;
}
或者这个:
vector<int> fill();
int main() {
vector<int> v = fill();
return 0;
}
我一直在阅读有关如何在C ++ 11中编译器将移动函数的返回结果而不是复制它们。其中一个比另一个好吗?或者只是偏好?
答案 0 :(得分:0)
从Single responsibility principle的角度来看,最好使用返回值来修改变量。
例如,如果您有一个fill()
函数为向量创建初始配置,那么函数的职责是创建初始配置(从db,file或硬编码配置中读取它们)。不将配置分配给您的变量(这可能也是一个复杂的过程)。
如果您只想更改1个变量,它会增加代码的可读性。您无需记住fill()
函数是否修改了您的变量。
答案 1 :(得分:-1)
前者更好,因为它避免了最后的复制操作。但我更喜欢这个:
bool fill(vector<int> & v);
返回标志用于标识函数是否成功执行。