[問題] C++ pass by reference type mismatch …
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC(g++) 4.5.2
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
無
問題(Question):
我在看 C++ primer 的時候, 其中有說到當 reference 型態不符的時候, 除非
parameter 有加 const, compiler 才會使用型態正確的暫時變數初始化完後再
賦值給 parameter, 否則 compiler 就會回報錯誤.
接著後來書上又講到 swap 這個例子, 可以不用加 const compiler 就會自己使
用暫時變數. 所以我自己試了一下, 發現只要函式取名為 swap (大小寫完全一樣)
compiler 就會自己使用暫時變數, 而只要函式名稱有稍微變動就會回報錯誤,
所以我想知道的是 swap 這個詞在 C++ 或者對 compiler 來說有甚麼特殊意義嗎.
且造成這個現象的原因是甚麼. 謝謝大家.
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/JLhwuo0b
函式名稱改成 swa, sWap, test, SWAP 等就會回傳錯誤
補充說明(Supplement):
編譯的選項是 -g -Wall -Wextra -pedantic
swap 函式並不用真的做 swap 的動作, 只要符合 void swap(type& a, type& b)
這樣的形式就可以, 我用更早版本的 g++ 編譯標準更寬鬆, 只要名字是 swap 就可以.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.189.226
※ 編輯: Minilogo 來自: 61.227.189.226 (03/29 11:54)
→
03/29 11:47, , 1F
03/29 11:47, 1F
推
03/29 11:54, , 2F
03/29 11:54, 2F
→
03/29 11:58, , 3F
03/29 11:58, 3F
→
03/29 11:59, , 4F
03/29 11:59, 4F
→
03/29 11:59, , 5F
03/29 11:59, 5F
→
03/29 12:00, , 6F
03/29 12:00, 6F
推
03/29 12:05, , 7F
03/29 12:05, 7F
→
03/29 12:06, , 8F
03/29 12:06, 8F
推
03/29 12:06, , 9F
03/29 12:06, 9F
→
03/29 12:07, , 10F
03/29 12:07, 10F
→
03/29 13:12, , 11F
03/29 13:12, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章