"указатель на структуру sockaddr_in можно привести к указателю на структуру sockaddr и наоборот"
Я не понимаю, как можно привести sockaddr_in к носокадрес. Приведение указателя типа Big к типу Small должно обеспечить UD-поведение.
Код: Выделить всё
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
struct sockaddr_in {
short int sin_family; // Address family, AF_INET
unsigned short int sin_port; // Port number
struct in_addr sin_addr; // Internet address
unsigned char sin_zero[8]; // Same size as struct sockaddr
};
Если у меня есть класс A, имеющий только два целых числа, и класс B, имеющий 4 целых числа. И если у меня есть указатель типа B и я привожу его к типу A, то я уверен, что смогу получить первые два элемента. Но если класс A имеет 2 символа, объявленных первыми, и 2 целых числа, объявленных позже, указатели не смогут правильно получить значения, поскольку макет объекта в этом случае будет другим.
Изменить 1:
Код: Выделить всё
class Anu
{
public:
char a;
int b;
Anu()
{
a='a';
}
};
class Anurag
{
public:
Anurag() { a=4;}
int a;
int b;
int c;
int d;
};
int main()
{
Anu objanu;
Anurag objanurag;
Anurag *ptrAnurag= &objanurag;
ptrAnurag= (Anurag*)&objanu;
cout<
a; //Some weird value here
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/333 ... in-pointer
Мобильная версия