Примеры, когда побитовая замена () - плохая идея?

Вы не должны обрабатывать объектные указатели как указатели на необработанные двоичные данные на языках ООП, включая C ++. Объекты "больше чем" их представление.

Так, например,swapнеправильное использование двух объектов путем замены их байтов:

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));
}

Единственная ситуация, в которой я могу себе представить этот ярлык, вызывающийproblem когда объект содержит указатель на себя, который я редко (никогда?) не видел на практике; могут быть и другие сценарии.

Каковы некоторые реальные (реальные) примеры того, когда правильныйswap сломался бы, если бы вы выполнили побитовый обмен?
Я легко могу придумать надуманные примеры с указателями на себя, но я не могу думать ни о каких реальных примерах.

Ответы на вопрос(5)

Ваш ответ на вопрос