• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie rozumiem treści polecenia [KONSTRUKTORY, CPP]

42 Warsaw Coding Academy
0 głosów
452 wizyt
pytanie zadane 12 marca 2019 w C i C++ przez Curiosis Użytkownik (540 p.)

     Witajcie, bylibyście w stanie pomóc mi w zrozumieniu zadania, napisania kilka linijek kodu by zobrazować różnicę bądź znacie strony gdzie mógłbym przeczytać o tej różnicy dogłębniej Tutaj przesyłam treść polecenia:

Utwórz klasę zawierającą zmienną wskaźnikową bez konstruktora kopiującego.
Utwórz klasę zawierającą zmienną wskaźnikową wraz z konstruktorem kopiującym.

1 odpowiedź

0 głosów
odpowiedź 12 marca 2019 przez criss Mędrzec (172,590 p.)

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.

Podobne pytania

0 głosów
1 odpowiedź 248 wizyt
pytanie zadane 15 kwietnia 2021 w C i C++ przez anteq69 Początkujący (260 p.)
0 głosów
2 odpowiedzi 267 wizyt
pytanie zadane 17 września 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 293 wizyt

93,377 zapytań

142,380 odpowiedzi

322,532 komentarzy

62,727 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...