C++运算符重载:函数调用运算符operator()(参数列表)

目录

1.  函数调用运算符格式operator()(参数列表)说明

2.  举例(把对象当成函数名调用)


1.  函数调用运算符格式operator()(参数列表)说明

operator()(参数列表) 表示函数调用运算符,第一个表示()运算符,第二个()表示参数。函数调用运算符() 的一个最明显也是最重要的用途是——为在某种程度上表现得像函数的对象提供常用的函数调用语法行为类似于函数的对象通常称为似函数对象(function-like object)或简称为函数对象(function object)。这样的函数对象允许我们编写以非平凡操作作为参数的代码。在许多情况下,函数对象必须能够保存执行其操作所需的数据。

2.  举例(把对象当成函数名调用)

例1:

struct add

{

  int operator()(int a, int b) const { return a + b; }

  int operator()(){cout<< “hello world!”}

};

    add a;

    int c = a(1, 2); // c initialized to 1+2  

    c = a.operator()(1, 2);//显式调用

    a();

    a.operator()();//显式调用

注意在语法说明时,省略了参数列表,写成了 operator()()在使用的时候operator()()表示0参数的函数对像,如上例所示。

例2:

class Example

{

 public:

    void operator()() { std::cout << "Example.operator()\n"; }

};

void function() { std::cout << "Function\n"; }

template <class T>

void t(T o)

{

    o(); // 函数对象 or "实际"函数

}

Example object;

t(object);

t(function);

可以看出,函数对象在泛型编程中的重要性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值