Može li mi itko reći za što se koristi kopirni instruktor i ako možete dati koji primjer :)
Kopirni konstruktor se koristi za slučaj deep copy tj. kada se u klasi nalaze pokazivači. Npr;
#include <iostream>
using namespace std;
class Student{
private:
    char* JMBG;
public:
    // konstruktor s parametrom
    Student(char* jmbg){
       JMBG = new char[11];
       strcpy(JMBG, jmbg);
    }
    // kopirni konstruktor
//    Student(const Student& s){
//       JMBG = new char[11];
//       strcpy(JMBG, s.GetJMBG());
//    }
    char* GetJMBG() const{
       return &JMBG[0];
    }
    void SetJMBG(char* noviJMBG){
       strcpy(JMBG, noviJMBG);
    }
    //destruktor
    ~Student(){
       delete JMBG;
    }
};
int main(){
    Student Ante("1122334455");
    Student Ivica = Ante;  // poziv kopirnog konstruktora!
    cout << Ante.GetJMBG() << endl;  // 1122334455
    cout << Ivica.GetJMBG() << endl; // 1122334455
    Ante.SetJMBG("6677889900");
    cout << Ante.GetJMBG() << endl;  // 6677889900
    cout << Ivica.GetJMBG() << endl; // 6677889900 ?!?! a trebao bi biti 1122334455
    return 0;
}
U ovom primjeru u funkciji main se poziva defaultni kopirni konstruktor koji radi shallow copy. Problem s time je da sada Ante i Ivica dijele isti pokazivač (JMBG). Iz tog razloga kada se mijenja JMBG Anti odmah se mijenja i Ivici. Da bi se to spriječilo mora se napraviti deep copy tj. napisati vlastitu implementaciju kopirnog konstruktora koji će za svaki pokazivač u klasi napraviti novu memorijsku lokaciju.
Kada prvi put pokreneš ovaj program izbaciti će ti kao u komentarima (isti JMBG za Antu i Ivicu), a gore (komentirano u klasi) je napisana implementacija kopirnog konstruktora koja će riješiti ovaj problem (Ivičin JMBG se neće mijenjati jer više ne dijeli pokazivač JMBG s Antom).
    
    
    



  ali se bliži ispit pa ispitujem sitnice koje me bune.. nadam se da ćeš odvojiti još koju minuticu (oćigledno u tvom slučaju sekundicu) vremena da mi pomogneš oko još kojeg .., ako bude potrebno?!