0

为什么要在 C++ 类或 C++11 或更高版本中的结构中重载 () 运算符?据我所知,当您想要将类或结构等对象传递到 std::thread 并通过可调用类型启动一个带有数据包的新线程时,这些运算符会被重载。但除此之外,为什么还要重载 () 运算符?你不能简单地在类或结构的构造函数中做同样的事情吗?

为什么使用

  struct MyCallableStruct{
    void operator() () {
        dosomething();
    }
  }

你什么时候可以做

  struct MyCallableStruct{
      MyCallableStruct() { dosomething(); }
  }
4

1 回答 1

2

他们完全不同。

首先也是最重要的,当您使用operator()时,它可以作为函数参数(通过对象)传递。相比之下,当通过构造函数实现时,只能通过模板(按类)传递

其次,operator()可以在对象创建后多次调用,而construtor只能在构造时调用

总而言之,它们在不同的场景中是不同的和有用的

于 2019-06-03T01:33:45.453 回答