为什么boost示例再次调用`shared_from_this()`而不是使用闭包变量

时间:2015-04-13 19:10:37

标签: boost boost-asio

在方法do_readdo_writeboost asio HTTP server example的连接对象中,捕获shared_from_this()以解决连接对象生命周期问题as been answered previously。仍然不清楚为什么在第67和88行,代码再次调用shared_from_this(),而不是使用self

40  auto self(shared_from_this());
41  socket_.async_read_some(boost::asio::buffer(buffer_),
42      [this, self](boost::system::error_code ec, std::size_t bytes_transferred)
43      {
....
67          connection_manager_.stop(shared_from_this());
```

1 个答案:

答案 0 :(得分:5)

没有实际的理由(我猜这只是旧C ++ 03示例的一个剩余部分,它被重构为C ++ 11风格)。使用self会更好,因为它已经被捕获了。

我能想到的唯一“教育”原因可能是证明明确捕获的self存储在lambda中,即使它未被使用。