¿Ejemplos de cuándo un intercambio de bits () es una mala idea?
Se supone que no debe tratar los punteros de objetos como punteros a datos binarios sin procesar en lenguajes OOP, incluido C ++. Los objetos son "más que" su representación.
Así por ejemplo,swap
Ingresar dos objetos intercambiando sus bytes es incorrecto:
template<class T>
void bad_swap(T &a, T &b) // Assuming T is the most-derived type of the object
{
char temp[sizeof(T)];
memcpy(temp, &a, sizeof(a));
memcpy(&a, &b, sizeof(b));
memcpy(&b, temp, sizeof(temp));
}
La única situación, sin embargo, en la que puedo imaginar este atajo causando unproblema es cuando un objeto contiene un puntero a sí mismo, que raramente (¿nunca?) he visto en la práctica; Sin embargo, también puede haber otros escenarios.
¿Cuáles son algunos ejemplos reales (en el mundo real) de cuándo un correctoswap
¿Se rompería si realizas un cambio de bit a bit?
Fácilmente se me ocurren ejemplos ideados con autoapuntos, pero no puedo pensar en los del mundo real.