[STL] 只有 operator() 的Class

看板C_and_CPP (C/C++)作者 (Victor)時間19年前 (2006/02/28 22:50), 編輯推噓8(804)
留言12則, 8人參與, 最新討論串1/1
我最近在研究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

02/28 23:06, , 1F
差不多
02/28 23:06, 1F

02/28 23:05, , 2F
可以看一看Function Object 的相關資料
02/28 23:05, 2F

02/28 23:20, , 3F
這東西蠻有趣的 我知道中括弧可以重載 ()不知道是不是一樣
02/28 23:20, 3F

02/28 23:21, , 4F
的用法 ..
02/28 23:21, 4F

02/28 23:19, , 5F
這在STL裡面用蠻多的,有很多傳統函數呼叫無法達成的好處
02/28 23:19, 5F

02/28 23:24, , 6F
Loki 的 Functor 就更有趣了
02/28 23:24, 6F

02/28 23:37, , 7F
請問一下為什麼operator()()有兩個小括號 ?
02/28 23:37, 7F

02/28 23:39, , 8F
第一個是表示你要重載 (), 第二個是傳入值所在的括號
02/28 23:39, 8F

03/01 02:27, , 9F
嗯,後面那對小括號,就當做一般函式參數列的小括號啦~
03/01 02:27, 9F

03/01 05:16, , 10F
functor好處很多 如~額外資訊保留~效能最佳化~找文章看
03/01 05:16, 10F

03/01 08:15, , 11F
03/01 08:15, 11F

03/01 08:17, , 12F
教學投影片 相關內容在第 17 章 STL 簡介
03/01 08:17, 12F
文章代碼(AID): #1416D1o6 (C_and_CPP)
文章代碼(AID): #1416D1o6 (C_and_CPP)