2015-01-08 5 views
0

Я читаю WinSock учебник, и я заметил следующую строку кода:Что делает этот кусок кода на C++?

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

слушатель является SOCKET объектом, clientinfo является SOCKADDR_IN объект.

Я знаю, что & является оператором «адрес-из», а * является оператором-посредником. Я замечаю, что он похож на кастинг на C#.

Что означает: (SOCKADDR*)(&clientinfo) означает в контексте этой функции?

ответ

2

(&clientinfo) принимает адрес clientinfo и (SOCKADDR*)typecasts этого на указатель на SOCKADDR

В C++, я предпочел бы использовать static_cast<SOCKADDR*>(&clientinfo)

Вы можете прочитать больше о static_cast here.

1

Это отливка. Он направляет указатель на SOCKADDR_IN в указатель на SOCKADDR. Эти два типа являются совместимыми.

В основном, как полиморфизм выполняется в C, а bind - это API C.

Смежные вопросы