2015-01-08 226 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。