重载操作符()与lambda表达式

重载操作符()与lambda表达式

Content #

int id = 0;
auto f = [id] () mutable {
  std::cout << "id: " << id << std::endl;
  ++id;
};
id = 42;
f();
f();
f();
std::cout << id << std::endl;

程序输出: id: 0 id: 1 id: 2 42

改写成重载操作符():

class {
private:
  int id;
public:
  void operator() () {
    std::cout << "id: " << id << std::endl;
    ++id;
  }
};

From #