use*_*020 7 c++ parameter-passing
对于构造函数如下,如何确定它?
class A
{
public:
A(string str) : mStr(str) {} // here which is better,
// pass by value or const reference?
void setString(string str) { mStr = str; } // how about here?
private:
string mStr;
};
Run Code Online (Sandbox Code Playgroud)
您网站上的文章对于软件工程来说不是一个很好的参考。(它也可能已经过时了,因为它谈论的是移动语义并且是 2003 年的。)
一般规则很简单:通过 const 引用传递类类型,通过值传递其他类型。有明确的例外:为了与标准库的约定保持一致,通常也按值传递迭代器和函数对象。
其他任何事情都是优化,在分析器要求您必须这样做之前不应进行。
| 归档时间: |
|
| 查看次数: |
3892 次 |
| 最近记录: |