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

Konstruktor bazowy z argumentami

Object Storage Arubacloud
0 głosów
232 wizyt
pytanie zadane 3 października 2016 w C i C++ przez niezalogowany

Witam mam +/- taki kod

class A
{

public:
A(int x, int y);
};


class B: public A
{

public:
B();
};

Zamierzam stworzyć obiekt klasy B, jednak nie wiem jak się zabrać za to aby został wywołany konstruktor klasy bazowej z wszystkimi argumentami

1 odpowiedź

0 głosów
odpowiedź 3 października 2016 przez Ehlert Ekspert (212,670 p.)
wybrane 4 października 2016
 
Najlepsza

To zależy skąd te argumenty. Najlepiej wywołać go w liście inicjalizacyjnej. Jeśli Ty tego nie zrobisz jawnie, to zrobi to kompilator.

class A
{
public:
A(int x, int y){}

};

class B : public A
{
public:
B()
:A(10, 3){}

};

Konstruktor klasy B nie przyjmuje żadnych parametrów, więc zakładam że w przyszłości dla A uwzględnisz jakieś domyślne.

komentarz 3 października 2016 przez niezalogowany
no właśnie sęk jest w tym, że będę tworzył obiekt B i nie wiem jak to zrobić
komentarz 3 października 2016 przez Ehlert Ekspert (212,670 p.)
A(int x = 5, int y = 1){}
komentarz 3 października 2016 przez niezalogowany
chmmm nie do końca rozumiem, w konstruktorze obiektu A mam mnóstwo rzeczy, które on uzupełnia albo ustawia, poza tym mam kilkadziesiąt obiektów A więc nie mogę nic w nim zmieniać. Klasa B ma wykonac dokładnie to samo co A + ma mieć trochę swoich funkcji więc by nie powielać tego co robi konstruktor A chciałbym go użyć przy obiektach B
komentarz 4 października 2016 przez draghan VIP (106,230 p.)

w konstruktorze obiektu A mam mnóstwo rzeczy, które on uzupełnia albo ustawia
(...)
Klasa B ma wykonac dokładnie to samo co A + ma mieć trochę swoich funkcji więc by nie powielać tego co robi konstruktor A chciałbym go użyć przy obiektach B

No to musisz w klasie B zdefiniować konstruktor z parametrami, które będą służyły do prawidłowego wywołania konstruktora klasy A.

class A
{
public:
  A(int x, int y);
};
 
class B: public A
{
public:
  B(int x, int y): A(x, y)
  {
  }
};

Albo, jak radzi Ehlert, zdefiniować wartości domyślne dla konstruktora A, żebyś nie musiał w klasie B podawać żadnych wartości do niego. Wszystko zależy od specyfiki budowanego przez Ciebie systemu.

Podobne pytania

0 głosów
0 odpowiedzi 102 wizyt
pytanie zadane 5 stycznia 2023 w C i C++ przez dextermorgan Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 145 wizyt
pytanie zadane 11 czerwca 2016 w C i C++ przez JKluseczka Obywatel (1,430 p.)
0 głosów
2 odpowiedzi 207 wizyt
pytanie zadane 10 kwietnia 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)

92,578 zapytań

141,426 odpowiedzi

319,653 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...