2015-01-08 183 views
0

我读一个Winsock的教程,和我注意到下面的代码行:这段C++代码是做什么的?

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

侦听器是一个SOCKET对象,ClientInfo客户端是一个SOCKADDR_IN对象。

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

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

回答

2

(&clientinfo)需要的clientinfo(SOCKADDR*)typecasts这个地址指针SOCKADDR

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

你可以阅读更多关于static_cast here

1

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

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