我遇到的一些类有一个双字符串构造函数:
construct( const std::string& s );
construct( const char* s );
拥有一个std::string
构造函数有一个明显的好处是能够传递std::string
没有c_str()
. const char*
但是,如果参数无论如何都存储在 std::string 中,那么使用构造函数有什么好处吗?
尤其是:
construct( const std::string& s ) : m_string( s ) {}
construct( const char* s ) : m_string( s ) {}
std::string m_string;
对于字符串文字和变量,第二个构造函数会更快char*
,还是会被优化掉?
附加问题 - C++11 移动构造在这里有什么改变吗?