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

HackNation - ogólnopolski hackathon
0 głosów
514 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,570 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ź 301 wizyt
pytanie zadane 15 kwietnia 2021 w C i C++ przez anteq69 Początkujący (260 p.)
0 głosów
2 odpowiedzi 357 wizyt
pytanie zadane 17 września 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 346 wizyt

93,626 zapytań

142,551 odpowiedzi

323,049 komentarzy

63,130 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1452p. - dia-Chann
  2. 1437p. - DziarnowskiJ
  3. 1411p. - Łukasz Piwowar
  4. 1409p. - CC PL
  5. 1388p. - Maurycy W
  6. 1371p. - raydeal
  7. 1369p. - Adrian Wieprzkowicz
  8. 1360p. - Tomasz Bielak
  9. 1335p. - robwarsz
  10. 1296p. - Michal Drewniak
  11. 1269p. - Rafał Trójniak
  12. 1248p. - rafalszastok
  13. 1141p. - ssynowiec
  14. 1116p. - rucin93
  15. 1102p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...