[問題] c++ class 可否多載 class name?

看板C_and_CPP作者 (妤欣)時間4年前 (2019/07/24 17:15), 4年前編輯推噓8(8012)
留言20則, 9人參與, 4年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) clang++ -std=c++11 問題(Question): 我目前能多載 operator[] / > / < / + / ... 但我想要多載 class 變數名稱 ex. class Ball { public: ....... bool 多載func () { return (a > b); } private: ... ... int a, b; } int main(){ Ball a; // 我想要多載 a,直接 return boolean value if( a ) { } .... } 目前不知道如何實作 有大大可以分享教學嗎~~ 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.108.25 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1563959733.A.36F.html

07/24 17:24, 4年前 , 1F
比較符合你需求的做法是overload operator() 但使用起來
07/24 17:24, 1F

07/24 17:25, 4年前 , 2F
會像這樣--> if(a()){...}
07/24 17:25, 2F
不行,這不符合需求,這我有想過~ a 不能變成 a()

07/24 17:30, 4年前 , 3F
就 operator bool() 啊XD
07/24 17:30, 3F
沒有很懂><

07/24 17:31, 4年前 , 4F
重載轉型成bool的operator?
07/24 17:31, 4F

07/24 17:31, 4年前 , 5F
慢了XD
07/24 17:31, 5F
※ 編輯: OfficeGL (114.137.108.25 臺灣), 07/24/2019 18:15:50

07/24 18:16, 4年前 , 6F
就是if(cin),對吧 XD
07/24 18:16, 6F

07/24 18:16, 4年前 , 7F
conversion operator
07/24 18:16, 7F

07/24 18:18, 4年前 , 8F

07/24 19:54, 4年前 , 9F
if(a) 這種式子會把 a 轉型成 bool 再做判斷
07/24 19:54, 9F

07/24 19:54, 4年前 , 10F
所以你只要重載當它轉型成 bool 時的行為即可
07/24 19:54, 10F

07/24 19:55, 4年前 , 11F
要轉成的值即是所有你要使 if(a) 成立的狀況
07/24 19:55, 11F

07/25 00:57, 4年前 , 12F
bibo說的就是你想要的
07/25 00:57, 12F
可以了~~~ 感謝大家幫助 不過我可以在提問一下嗎? conversion operator, ex. operator double() / bool() / int() .. 這樣不就根本不需要多載 + - * / && or 了嗎~ class ball { /* declare */ } int main(){ ball a, b; int sum = a + b; // 這樣可以 work 椰!! 我根本沒多載 operator + } 太厲害了~~ 還是我有誤會呢 ※ 編輯: OfficeGL (114.137.202.175 臺灣), 07/25/2019 13:33:34

07/25 13:51, 4年前 , 13F
你要的那個operator+不見得什麼場合都會是整數的+呀XD
07/25 13:51, 13F

07/25 13:53, 4年前 , 14F
最簡單的例子就是std::string
07/25 13:53, 14F

07/25 17:35, 4年前 , 15F
簡單講就是當你的 operator + - * / 等等的運算結果
07/25 17:35, 15F

07/25 17:35, 4年前 , 16F
會需要是某個非內建型態的東西的時候
07/25 17:35, 16F

07/25 17:36, 4年前 , 17F
你不管用什麼中間型態過渡都是沒辦法的
07/25 17:36, 17F

07/25 17:36, 4年前 , 18F
數的運算的例子例如表示有理數的 class
07/25 17:36, 18F

07/25 17:37, 4年前 , 19F
跟數無關的例如上面提的字串相連
07/25 17:37, 19F
瞭解了~~ 非常謝謝解說 ※ 編輯: OfficeGL (114.137.202.175 臺灣), 07/25/2019 18:31:03

07/28 12:42, 4年前 , 20F
看 operator + 還是 operator int 的成本大吧
07/28 12:42, 20F
文章代碼(AID): #1TE26rDl (C_and_CPP)