绑定函数中类名前的C ++&符号

时间:2017-03-24 19:08:08

标签: c++ boost bind

我正在研究升级库并坚持到这一行:

boost::bind(&Chat_Client::handle_connection, this, boost::asio::placeholders::error);

有人可以向我解释一下这个&符号&Chat_Client::handle_connection的意思吗?我之前没见过这样的语法。 handle_connection功能不是static。文档说

  

bind(& X :: f,args)相当于bind(mem_fn(& X :: f),args)

它没有变得更清晰。 SOS。

1 个答案:

答案 0 :(得分:0)

Bind采用函数指针或函子。

handle_connection是一个功能。具体而言,它是Chat_Client的成员函数。函数从内存中的可执行部分开始。要调用函数,您可以开始在该地址执行代码。将函数绑定到boost::function变量时,记住的是函数指针(当我尝试调用此boost::function时,我应该去哪里?)。

handle_connection已在Chat_Client中实施。在内存中,该函数将布局一次,并使用指向当前实例的不同this指针进行简单调用。这就是原因:

  1. 您仍然使用&Chat_Client::handle_connection
  2. 指定功能
  3. 您需要将this作为第一个绑定参数传递,即使Chat_Client*不是handle_connection签名的一部分。