作者StubbornLin (Victor)
看板C_and_CPP
標題[STL] 只有 operator() 的Class
時間Tue Feb 28 23:03:43 2006
我最近在研究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:教學投影片 相關內容在第 17 章 STL 簡介 03/01 08:17