我正在阅读WinSock教程,我注意到以下代码行:
bind(listener, (SOCKADDR*)(&clientinfo), sizeof(clientinfo))
listener是一个SOCKET
对象,clientinfo是一个SOCKADDR_IN
对象。
我知道&
是“address-of”运算符,*
是deference运算符。我注意到它看起来类似于在C#中投射。
:(SOCKADDR*)(&clientinfo)
在该函数的上下文中意味着什么?
答案 0 :(得分:2)
(&clientinfo)
将clientinfo
和(SOCKADDR*)
typecasts地址指向SOCKADDR
在C++
中,我更愿意使用static_cast<SOCKADDR*>(&clientinfo)
您可以阅读有关static_cast here的更多信息。
答案 1 :(得分:1)
这是演员阵容。它将指向SOCKADDR_IN的指针转换为指向SOCKADDR的指针。这两种类型恰好兼容。
它基本上是如何在C中完成多态,而bind
是一个C API。