作者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
1F:推 godfat:差不多 02/28 23:06
2F:→ adxis:可以看一看Function Object 的相关资料 02/28 23:05
3F:推 drkkimo:这东西蛮有趣的 我知道中括弧可以重载 ()不知道是不是一样 02/28 23:20
4F:推 drkkimo:的用法 .. 02/28 23:21
5F:推 Keiichi:这在STL里面用蛮多的,有很多传统函数呼叫无法达成的好处 02/28 23:19
6F:→ Keiichi:Loki 的 Functor 就更有趣了 02/28 23:24
7F:推 embedded:请问一下为什麽operator()()有两个小括号 ? 02/28 23:37
8F:推 godfat:第一个是表示你要重载 (), 第二个是传入值所在的括号 02/28 23:39
9F:推 UNARYvvv:嗯,後面那对小括号,就当做一般函式参数列的小括号啦~ 03/01 02:27
10F:→ cplusplus:functor好处很多 如~额外资讯保留~效能最佳化~找文章看 03/01 05:16
12F:→ oxoxoxox:教学投影片 相关内容在第 17 章 STL 简介 03/01 08:17