Я перешел к созданию своего собственного конструктора копий, и это в целом имеет смысл для меня. Тем не менее, по теме создания собственного оператора присваивания мне нужен кто-то, чтобы заполнить пробел для меня.Возврат * с оператором присваивания
Я довольно много не понимаю, почему вы возвращаете * это во всех примерах, таких, как показано ниже:
Foo & Foo::operator=(const Foo & f)
{
//some logic
return *this;
}
Так что, если у меня есть какие-то заявления, как:
Foo f;
f.hour = 7;
Foo g;
g = f;
После запуска оператора присваивания он возвращает ссылку на объект g (* this). Так что теперь вопрос в том, не будет у меня теперь есть заявление неявно, как это ?:
g = g (g being a reference)
Дело в том, прежде, установив ссылку на объект только вызвало бы конструктор копирования будет вызван. В этом случае он даже не подходит для подписи конструктора копирования.
Не забудьте проверить самоопределение! (см. http://www.parashift.com/c++-faq-lite/assignment-operators.html#faq-12.1) –
@ В silico: В качестве альтернативы напишите ваши операторы присваивания, чтобы они работали с самоназначением (что часто является результатом наличия исключающих операторов присваивания). –
Мой вопрос хотя и за пределами * это: Если я вернул ссылку на объект и храню его в обычном объекте, что произойдет, если конструктор копирования не будет вызван. В моем случае я уже написал оператор присваивания, поэтому конструктор копирования не будет вызван. – Ilya