看板 C_and_CPP 關於我們 聯絡資訊
我最近在研究STL 但是有一東西一直讓我覺得很奇怪 就是像這種東西 class IsXXX { public: bool operator()(const MyStruct &lhs) { return (lhs.x==10); } }; 因為 operator()運算子 在平時好像都完全沒用過 #include <iostream> #include <string> #include <list> #include <algorithm> using namespace std; class A{ public: bool operator()(){ cout << "= =?" << endl; return true; } }; int main() { A Test; Test(); system("pause"); } 因為這種用法是從來沒見過的,所以對於這個運算子 我有個疑問 就是 operator() 這個運算子 是C++為了取代傳送函數位置而定的 把物件當函數呼叫? 以上,就是我的疑問 -- VICTOR工作室 URL : http://www.kinmen.info/vic/ C/C++ Visual Basic 6.0 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.64.145
godfat:差不多 02/28 23:06
adxis:可以看一看Function Object 的相關資料 02/28 23:05
drkkimo:這東西蠻有趣的 我知道中括弧可以重載 ()不知道是不是一樣 02/28 23:20
drkkimo:的用法 .. 02/28 23:21
Keiichi:這在STL裡面用蠻多的,有很多傳統函數呼叫無法達成的好處 02/28 23:19
Keiichi:Loki 的 Functor 就更有趣了 02/28 23:24
embedded:請問一下為什麼operator()()有兩個小括號 ? 02/28 23:37
godfat:第一個是表示你要重載 (), 第二個是傳入值所在的括號 02/28 23:39
UNARYvvv:嗯,後面那對小括號,就當做一般函式參數列的小括號啦~ 03/01 02:27
cplusplus:functor好處很多 如~額外資訊保留~效能最佳化~找文章看 03/01 05:16
oxoxoxox:可到 http://www.math.ncu.edu.tw/~ziyou/c++ 下載區下載 03/01 08:15
oxoxoxox:教學投影片 相關內容在第 17 章 STL 簡介 03/01 08:17