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

What does this piece of C++ code do?

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

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

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

我知道 & 是 "address-of" 运算符,而 * 是顺从运算符。我注意到它看起来类似于 C# 中的转换。

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

(&clientinfo) 获取 clientinfo(SOCKADDR*) typecasts 的地址指向 SOCKADDR

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

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

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

这基本上就是在 C 中实现多态性的方式,bind 是一个 C API。