如我错了请纠正我.说我有:
struct X
{
std::string mem_name;
X(std::string name)
: mem_name(std::move(name))
{}
...
};
struct Y
{
std::string mem_name;
Y(const std::string &name)
: mem_name(name)
{}
...
};
Run Code Online (Sandbox Code Playgroud)
在Xctor中,name显然是传递给任何参数的副本X,X调用std::string初始化的移动mem_name,对吧?
让我们称之为X*的复制然后移动 ; 两个操作:COPY,MOVE.
在Y's ctor中,name是一个const ref,这意味着没有元素的实际副本,因为我们直接处理从Y需要创建对象的地方传递的参数.但是,我们复制name到初始化mem_name的Y; 一个操作:COPY.因此它应该更快(对我来说更好)?
在Scott Meyer的GN13演讲中(围绕时间框架8:10和8:56),他谈到了"想要速度?通过价值传递",我想知道在传递参数时是否有任何性能差异或损失(或者字符串是准确的)通过引用和传递值"以获得速度?"
我知道按值传递参数可能很昂贵,特别是在处理大数据时.
也许(显然?)我的谈话中缺少一些东西?