- Codice:
class Example5 { string* ptr;
public:
Example5 (const string& str) : ptr(new string(str)) {} ;
~Example5 () {delete ptr;}
// copy constructor:
Example5 (const Example5& x) : ptr(new string(x.content())) {}
// access content:
const string& content() const {return *ptr;}
//copy assignment
Example5& operator= (const Example5& x) {
delete ptr; // delete currently pointed string
ptr = new string (x.content()); // allocate space for new string, and copy
return *this;
}
};
Soprattutto non capisco il ruolo di return *this: cioè non capisco perchè, se quello che vogliamo è solo modificare i datamembri di Example5, la funzione debba ritornare qualcosa. Ad esempio, se dichiariamo:
- Codice:
Example5 class1;
Example5 class2;
class2=class1;
il codice class2=class1 equivale (credo) a class2.operator=(class1) e quindi non capisco il ruolo di return *this, che in questo caso dovrebbe essere equivalente a return class2 (se appunto l'operatore = viene chiamato da class2). A cosa verrebbe assegnato *this?