[問題] 關於C++的Rvalue reference
開發平台(Platform): ( G++, Linux, ...)
C++0x有個叫Rvale reference的東西,最近開始研究它。
上網找資料,說這是為了效率而提出的東西。
以下是網路上的例子:
// string的相加
string s1( "s1" );
string s2( "s2" );
string s3 = s1 + s2;
// 上面會呼叫:
string operator+( const string &lhs, const string &rhs )
{
string str( lhs );
str += rhs;
return str;
}
// 以上會產生一個暫時物件str,如果改成利用Rvalue reference,
// 就不會產生暫時物件
string &&operator+( string &&lhs, const string &rhs )
{
lhs += rhs;
return ( string && )lhs;
}
我想問的是,如果我寫
s3 = s1 + s2;
用的是Rvalue reference的版本,那這樣s1不是會被修改到嗎?
如果我不想要s1不被修改( 可能之後會用 ),又不想失去效率,
那該如何寫比較好??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.77.208
→
03/24 22:21, , 1F
03/24 22:21, 1F
→
03/24 22:26, , 2F
03/24 22:26, 2F
→
03/24 22:29, , 3F
03/24 22:29, 3F
推
03/24 22:31, , 4F
03/24 22:31, 4F
推
03/24 22:34, , 5F
03/24 22:34, 5F
→
03/24 22:34, , 6F
03/24 22:34, 6F
推
03/24 23:13, , 7F
03/24 23:13, 7F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章