﻿#include <iostream>
using namespace std;

class Uczen{
    private:
        // gdy pole klasy jest wskaźnikiem musimy napisać własny konstruktor kopiujący
		string* imie;
        // konstruktor
	 public:
        Uczen(string nazwa){
            imie = new string(nazwa);
        };
        // własny konstruktor kopiujący
        Uczen(const Uczen& u){
            imie = new string(*(u.imie));
        }
        // destruktor
        ~Uczen(){
            delete imie;
        }

        string getImie(){
            return *imie;
        }
        void setImie(string nazwa){
           *imie = nazwa;
        }
};


int main() {

    Uczen uczen1("Marek");
    cout << uczen1.getImie()<<endl;  // Marek

    // działa konstruktor kopiujący napisany przez programistę
    Uczen uczen2 = uczen1;
    cout << uczen2.getImie()<<endl;  // Marek
    uczen1.setImie("Jarek");
    cout << uczen1.getImie()<<endl;  // Jarek
    // imię 2 ucznia nie zmieniło się
    cout << uczen2.getImie()<<endl;  // Marek

    return 0;
}
