...
| Code Block | ||
|---|---|---|
| ||
class Widget {
// ...
};
class Thingy {
public:
// ...
Thingy& operator=(const Thingy& rhs);
// ...
private:
Widget *w;
};
// ...
Thingy& Thingy::operator=(const Thingy& rhs) {
delete w; // delete the current Widget
w = new Widget(*rhs.w); // create a copy of rhs's Widget
return *this;
}
// ...
|
...
| Code Block | ||
|---|---|---|
| ||
Thingy& Thingy::operator=(const Thingy& rhs) { if (this != &rhs) { delete w; w = new Widget(*rhs.w); } return *this; } |
...
| Code Block | ||
|---|---|---|
| ||
Thingy& Thingy::operator=(const Thingy& rhs) { Widget *original = w; w = new Widget(*rhs.w); delete original; return *this; } |
...