• 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]

Aruba Cloud - Virtual Private Server VPS
0 głosów
448 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ź 242 wizyt
pytanie zadane 15 kwietnia 2021 w C i C++ przez anteq69 Początkujący (260 p.)
0 głosów
2 odpowiedzi 259 wizyt
pytanie zadane 17 września 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 290 wizyt

93,335 zapytań

142,331 odpowiedzi

322,415 komentarzy

62,670 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...