加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – void Classname :: operator()(){…}做什么?

发布时间:2020-12-16 09:37:37 所属栏目:百科 来源:网络整理
导读:我正在通过一些C代码,并遇到以下情况 void Classname::operator()(){ //other code here} 我认为这与重载构造函数有关,但有人可以详细说明吗? 解决方法 operator()是函数调用运算符.它允许您像函数一样使用类实例: Classname instance;instance(); //Will
我正在通过一些C代码,并遇到以下情况

void Classname::operator()()
{   
    //other code here
}

我认为这与重载构造函数有关,但有人可以详细说明吗?

解决方法

operator()是函数调用运算符.它允许您像函数一样使用类实例:

Classname instance;
instance(); //Will call the overload of operator() that takes no parameters.

这对于仿函数和各种其他C技术非常有用.你基本上可以传递一个“函数对象”.这只是一个具有operator()重载的对象.所以你将它传递给一个函数模板,然后函数模板就像一个函数一样调用它.例如,如果定义了Classname :: operator()(int):

std::vector<int> someIntegers;
//Fill in list.
Classname instance;
std::for_each(someIntegers.begin(),someIntegers.end(),instance);

这将为列表中的每个整数调用实例的operator()(int)成员.您可以在实例对象中包含成员变量,以便operator()(int)可以执行您需要的任何处理.这比传递原始函数更灵活,因为这些成员变量是非全局数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读