ich den folgenden Code für Zuweisungsoperator Überlastung verwendet haben:Zuweisungsoperator in c Überlastung ++
SimpleCircle SimpleCircle::operator=(const SimpleCircle & rhs)
{
if(this == &rhs)
return *this;
itsRadius = rhs.getRadius();
return *this;
}
My Copy Constructor ist dies:
SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{
itsRadius = rhs.getRadius();
}
In dem obigen Betreiber Überlastung Code, Copy-Konstruktor aufgerufen wird da wird ein neues Objekt erschaffen; daher habe ich den folgenden Code:
SimpleCircle & SimpleCircle::operator=(const SimpleCircle & rhs)
{
if(this == &rhs)
return *this;
itsRadius = rhs.getRadius();
return *this;
}
Seine gut funktionierend und das Kopierkonstruktor Problem vermieden wird, aber ist es unbekannte Probleme (für mich) in Bezug auf das?
Werfen Sie einen Blick auf die [Kopie und Swap-Idiom] (http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap -idiom) – Praetorian
@Praetorian Das Kopier- und Tausch-Idiom ist gut, wenn Sie wissen, dass ein Element während des Zuweisungsoperators geworfen werden kann oder wenn Sie mit Software arbeiten, die Sie nicht entwickelt haben und nicht wissen, ob ein Wurf auftreten wird. Wenn du mit deinen eigenen Gegenständen arbeitest und du weißt, dass es keine Würfe geben wird, die das Kopieren und das Tausch-Idiom verwenden, ist das nicht notwendig. –