[問題] 關於 enum 的 operator overloading

看板C_and_CPP作者 (putumaxally)時間11年前 (2014/05/25 05:45), 11年前編輯推噓1(105)
留言6則, 1人參與, 最新討論串1/4 (看更多)
問題(Question):overload operator 不能使用 pointer 當參數嗎? 上週在 C 語言的課堂上被老師問 pointer 跟 reference 的差別,我在 網路上找資料的時候看到這段程式碼 enum day { Sunday, Monday, Tuesday, Wednesday, Thursady, Friday, Saturday }x; day& operator++(day& d) { d = (day)(d + 1); return d; } 不可以改成 day* operator++(day* d) 的形式 只有當參數是 T, T& 才是 member operator 嗎,所以 T* 一定不會用在 operator overloading 嗎? 還有上面的例子是 prefix 的,那如果想要 postfix 該怎麼做呢 http://ppt.cc/Sa3Y 關於 pointer 跟 reference 的差別,我這樣描述對嗎? ※ 文章網址:http://www.ptt.cc/bbs/C_and_CPP/M.1400967957.A.51D.html ※ 編輯: putumaxally (175.180.68.25), 05/25/2014 05:49:04

05/25 07:21, , 1F
其實這不是 member operator...
05/25 07:21, 1F

05/25 07:22, , 2F
postfix 的話加個 int 參數即可, 不用用到甚至不用命名
05/25 07:22, 2F

05/25 07:22, , 3F
如果你的 operator 可能會直接作用在指標上就得要用 T*
05/25 07:22, 3F

05/25 07:24, , 4F
例如 std::string 的 operator == 就有吃 char* 的版本
05/25 07:24, 4F

05/25 07:24, , 5F
這讓我們能寫 someStringObject == "someCString"
05/25 07:24, 5F

05/25 07:24, , 6F
回一篇好了 @@
05/25 07:24, 6F
文章代碼(AID): #1JWHCLKT (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1JWHCLKT (C_and_CPP)