在性能方面,当需要像函数std::vector
或std::string
从函数返回“更重”的对象时,建议使用这种形式:
void func(std::vector<int> *dest)
{
}
而不是这种形式:
std::vector<int> func()
{
std::vector<int> arr;
// ...
return arr;
}
我假设第一种形式应该更快,但同时我经常看到第二种形式,Qt API 经常返回一个QString
例如,可能是因为它使用起来更方便或更直观。
另外我想知道是否有编译器优化可以在使用 return 语句时删除不必要的对象复制。
编辑
是否有今天仍在使用的流行编译器不执行答案中提到的优化?