我正在研究升级库并坚持到这一行:
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。
答案 0 :(得分:0)
Bind采用函数指针或函子。
handle_connection
是一个功能。具体而言,它是Chat_Client
的成员函数。函数从内存中的可执行部分开始。要调用函数,您可以开始在该地址执行代码。将函数绑定到boost::function
变量时,记住的是函数指针(当我尝试调用此boost::function
时,我应该去哪里?)。
handle_connection
已在Chat_Client
中实施。在内存中,该函数将布局一次,并使用指向当前实例的不同this
指针进行简单调用。这就是原因:
&Chat_Client::handle_connection
this
作为第一个绑定参数传递,即使Chat_Client*
不是handle_connection
签名的一部分。