Re: Зачем проверять на неравенство this в операторе присваивания?
От: Юрий Жмеренецкий ICQ 380412032
Дата: 19.04.14 03:00
Оценка: 1 (1) +1
Здравствуйте, Artifact, Вы писали:

A>Разве кто-то в здравом уме станет присваивать что-то самому себе? И, если уж так вышло, не является ли это ошибкой? И не лучше ли тогда вместо

A>
MyClass& operator=(const MyClass& other) {
A>    if(this != &other) {
A>         * * *
A>    }
A>}

A>писать
A>
MyClass& operator=(const MyClass& other) {
A>    assert(this != &other)
A>    * * *
A>}


В подавляющем большинстве случаев опрератор присваивания можно реализовать с помощью метода copy-and-swap, который корректно работает без лишней проверки в случае присваивания "самому себе".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.