Podejrzewam, że w zadaniu chodzi o zaprezentowanie użycia konstruktora kopiującego w sytuacji gdy powinno się go zdefiniować. Czyli np. mógłbyś zrobić sobie klase która alokuje sobie dynamicznie jakąś tablice i trzyma do niej wskaźnik.
Utwórz klasę zawierającą zmienną wskaźnikową bez konstruktora kopiującego.
Tutaj nie wiem czy chodzi o po prostu nie definiowanie konstruktora kopiującego czy jawne jego usunięcie. IMO lepiej by było jawnie usunąć (zabronić tworzenia) żeby kod był bezpieczny. Czyli taka klasa moglaby wyglądać jakoś tak:
class A
{
size_t sz;
int* a;
public:
A(size_t _sz) : sz{_sz}, a{new int[sz]} {}
A(const A&) = delete; // jawnie usunięty konstruktor kopiujący
};
Natomiast w drugim przypadku:
class A
{
size_t sz;
int* a;
public:
A(size_t _sz) : sz{_sz}, a{new int[sz]} {}
A(const A& other) {
// tutaj tworzysz tablice (na ktora bedzie wskazywal `a`) o rozmiarze other.sz
// oraz przekopiowujesz do niej dane z other.a
}
};
Oczywiście w obu wariantach powinien być jeszcze zdefiniowany destruktor, który będzie zwalniał tablice `a` oraz kopiujący operator przypisania (chociaż z jakiegoś powodu w zadaniu nie ma o tym mowy). Podobnie teoretycznie powinieneś też zdefiniować konstruktor przenoszący i przenoszący operator przypisania, ale podejrzewam, że wasz materiał [jeszcze?] tego nie obejmuje.