Przypisanie i inicjacja
napis& napis::operator=(const napis& s){
wsk = new char[rozm=s.rozm];
napis s2 = n1; // inicjacja, a nie przypisanie;
Po zdefiniowaniu konstruktora kopiującego oraz operatora przypisania powyższe instrukcje będą bezpieczne i będą działać poprawnie.
domniemany operator przypisania kopiuje jeden obiekt klasy na inny „składowa po składowej”
podobny efekt zachodzi jeszcze podczas
- przekazania obiektu w argumencie funkcji
- przekazywania obiektu jako wartości z funkcji
- inicjacji obiektu innym obiektem tej samej klasy
w wymienionych sytuacjach wykonywana jest funkcja nazywana konstruktorem kopiującym
char* wsk; //wskaźnik do pamięci
int rozm; //rozmiar wskazywanego napisu
napis(int r) {wsk = new char[rozm=r];}
napis& operator=(const napis&); //op. przypisania
napis(const napis&); //konstruktor kopiujący
napis::napis(const napis& s){
wsk = new char[rozm=s.rozm];