【发布时间】:2014-07-31 08:00:37
【问题描述】:
我有一个包含 std::string 的 Text 类。一个方法 SetText 如下:
void Text::SetText( const std::string& str )
{
m_str = str;
}
由于这个方法几乎总是以右值作为参数调用,所以我考虑了移动构造函数。我了解基础知识,但仅此而已。所以我做了测试,得出的结论是,另一个这样的函数会更好,一旦定义了移动构造函数和移动赋值,就会有性能提升:
void Text::SetText( std::string&& str )
{
m_str = move( str );
}
有我的问题:
- 它是否适用于标准容器?他们是否提供移动构造函数和赋值?
- 当类没有堆分配时,移动语义有用吗? (我的意思是根本没有堆分配,所以没有智能指针作为类成员)
谢谢。
【问题讨论】: