这段C ++代码有什么作用?

时间:2015-01-08 05:17:57

标签: c++ pointers winsock

我正在阅读WinSock教程,我注意到以下代码行:

bind(listener, (SOCKADDR*)(&clientinfo), sizeof(clientinfo))

listener是一个SOCKET对象,clientinfo是一个SOCKADDR_IN对象。

我知道&是“address-of”运算符,*是deference运算符。我注意到它看起来类似于在C#中投射。

(SOCKADDR*)(&clientinfo)在该函数的上下文中意味着什么?

2 个答案:

答案 0 :(得分:2)

(&clientinfo)clientinfo(SOCKADDR*) typecasts地址指向SOCKADDR

C++中,我更愿意使用static_cast<SOCKADDR*>(&clientinfo)

您可以阅读有关static_cast here的更多信息。

答案 1 :(得分:1)

这是演员阵容。它将指向SOCKADDR_IN的指针转换为指向SOCKADDR的指针。这两种类型恰好兼容。

它基本上是如何在C中完成多态,而bind是一个C API。