void operator()()的功能
Posted __tudou__
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了void operator()()的功能相关的知识,希望对你有一定的参考价值。
在学习多线程的时候看到这样的一段代码
#include <iostream>
#include <thread>
class Counter
public:
Counter(int value) : value_(value)
void operator()()
while (value_ > 0)
std::cout << value_ << " ";
--value_;
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << std::endl;
private:
int value_;
;
int main()
std::thread t1(Counter(3));
t1.join();
std::thread t2(Counter(3));
t2.detach();
// 等待几秒,不然 t2 根本没机会执行。
std::this_thread::sleep_for(std::chrono::seconds(4));
return 0;
对 void operator()()的功能表示困惑
// 查阅了一些资料,这个是简易的说明代码
class background_task
public:
void operator()() const
do_something();
do_something_else();
;
background_task f;
std::thread my_thread(f);
在这里,为什么我们需要operator()()?第一个和第二个()的意思是什么?其实我知道正常的运算符的操作,但是这个运算符很混乱.
最佳答案
第一个()是运算符的名称 – 它是在对象上使用()时调用的运算符. 第二个()是用于参数的,其中没有.
以下是您如何使用它的示例:
background_task task;
task(); // calls background_task::operator()
有参数的演示:
#include <iostream>
class Test
public:
void operator()(int a, int b)
std::cout << a + b << std::endl;
;
int main()
Test t;
t(3,5);
return 0;
// 输出结果
// 8
以上是关于void operator()()的功能的主要内容,如果未能解决你的问题,请参考以下文章
shiro-重写标签功能----shiro:hasPermission 标签重写
void()、逗号运算符 (operator,) 和不可能的 (?) 重载
C++内存管理(new operator/operator new/operator delete/placement new)