Вообще говоря, типы с необычной семантикой присваивания, такие как std::auto_ptr<>
и ссылки на C ++, облегчают попадание в ногу (или отстреливание всей ноги).
Когда ссылка используетсячлен, который означает, что сгенерированный компилятором operator=
делает очень удивительную вещь, назначая объект, на который ссылаются, вместо переназначения ссылки, потому что ссылки не могут быть переназначены для ссылки на другой объект.Другими словами, наличие ссылочного члена большую часть времени делает класс не присваиваемым.
Можно избежать этого удивительного поведения, используя простые указатели.