[問題] rvalue reference 的應用
前陣子書唸不下去跑去玩 rvalue reference
為自己有 value 語意的 classes 都加上
move constructor 和 move assignment operator
但是在應用上發現一點小問題
在原文介紹中寫了一個像這樣的範例:
s1 + " " + s2 + " " + s3 ... blah blah
由於+運算是左結合, 所以實際上要寫出
V operator +( T &&, const U & )
這種簽名的非成員重載才有用
再來看另一種情況, 假設有個很喜歡 jQuery 風格的人
把他的函式庫弄得跟 jQuery 寫法一樣:
String( "bb" ).replace( 0, 3 ).reverse().prepend( "aaa" ).length()
那麼這是不是很難受益於 rvalue reference?
(假設它們都回傳一個暫時物件, 不是 reference. 他可能喜歡 immutable string)
因為 operator 可以有非成員重載, 但具名函式卻不行
直接 return 一個 rvalue reference 好像也怪怪的
另外, 考慮到各種不同的 bind 狀況
同樣的 binary operator 似乎也需要做多種不同的 overloading
這時候是否是使用 std::forward 來把原本是 member operator 的
版本 forward 給一個 nonmember operator 版本?
後來越寫感到越奇怪, 就停在 move ctor/operator = 的階段
因為越想好像就要寫越多重載版本 = =
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.205.248.119
推
02/07 22:16, , 1F
02/07 22:16, 1F
→
02/07 22:17, , 2F
02/07 22:17, 2F
→
02/07 22:18, , 3F
02/07 22:18, 3F
→
02/07 22:19, , 4F
02/07 22:19, 4F
→
02/07 22:20, , 5F
02/07 22:20, 5F
→
02/07 22:21, , 6F
02/07 22:21, 6F
→
02/07 22:21, , 7F
02/07 22:21, 7F
→
02/07 23:26, , 8F
02/07 23:26, 8F
→
02/07 23:27, , 9F
02/07 23:27, 9F
→
02/07 23:27, , 10F
02/07 23:27, 10F
推
02/07 23:39, , 11F
02/07 23:39, 11F
→
02/07 23:40, , 12F
02/07 23:40, 12F
→
02/07 23:41, , 13F
02/07 23:41, 13F
→
02/07 23:42, , 14F
02/07 23:42, 14F
→
02/07 23:42, , 15F
02/07 23:42, 15F
推
02/08 00:20, , 16F
02/08 00:20, 16F
→
02/08 00:21, , 17F
02/08 00:21, 17F
→
02/08 00:23, , 18F
02/08 00:23, 18F
→
02/08 00:23, , 19F
02/08 00:23, 19F
→
02/08 00:24, , 20F
02/08 00:24, 20F
→
02/08 00:25, , 21F
02/08 00:25, 21F
→
02/08 00:26, , 22F
02/08 00:26, 22F
→
02/08 00:31, , 23F
02/08 00:31, 23F
→
02/08 00:32, , 24F
02/08 00:32, 24F
→
02/08 00:32, , 25F
02/08 00:32, 25F
→
02/08 00:33, , 26F
02/08 00:33, 26F
→
02/08 00:33, , 27F
02/08 00:33, 27F
→
02/08 00:35, , 28F
02/08 00:35, 28F
→
02/08 00:35, , 29F
02/08 00:35, 29F
→
02/08 00:39, , 30F
02/08 00:39, 30F
→
02/08 00:46, , 31F
02/08 00:46, 31F
→
02/08 00:46, , 32F
02/08 00:46, 32F
→
02/08 00:47, , 33F
02/08 00:47, 33F
→
02/08 01:09, , 34F
02/08 01:09, 34F
→
02/08 01:09, , 35F
02/08 01:09, 35F
→
02/08 03:20, , 36F
02/08 03:20, 36F
→
02/08 15:28, , 37F
02/08 15:28, 37F
推
02/08 22:47, , 38F
02/08 22:47, 38F
→
02/09 02:50, , 39F
02/09 02:50, 39F
→
02/09 02:51, , 40F
02/09 02:51, 40F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章