Re[2]: "умное" клонирование экземпляров
От: K13 http://akvis.com
Дата: 23.12.08 12:10
Оценка:
Х>а что мешает сделать метод Assign виртуальным и переопределить его только у тех наследников, для которых актуально более "умное" поведение?

Я когда-то так делал.
возникают нюансы:

class A {
virtual void operator=( const A& );
};

class B : public A {};
class C : public A {};

A a; B b; C c;

c = b; // проходит на ура, хотя вряд ли так задумывалось программистом.


Ну и внутри A::operator=(const A&) сложно узнать правильный sizeof( *this )

Так что я бы не парился и оставил реализацию оператора присваивания компилятору, за исключением случаев, где необходимо что-то особенное.
Благо нормальный компилятор копирование сложной структуры из POD приводит к проинлайненому memcpy,
а если там не-POD, то тогда всякие memcpy -- это именно грабли.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.