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

Dziedziczenie wielokrotne

0 głosów
182 wizyt
pytanie zadane 23 kwietnia 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)

Cześć wszystkim,

ćwiczę przykłady z dziedziczenia wielokrotnego. Wiem, że jeżeli klasa pochodna(a) ma dwie klasy bazowe (b i c ), które odnoszą się do jednej klasy bazowej dla nich(główna klasa), to w tym egzemplarzu klasy powstają dwa obiekty - glowna_klasa. Aby temu zaradzić autor podręcznika zaleca stosowanie słowa virtual   przy dziedziczeniu. Moje pytanie, czy to słowo kluczowe muszę pisać osobno przy każdej klasie (b ic ), czy mogę tylko raz, przy definiowaniu klasy a? 

 

class glowna_klasa
[...]
class b : public virtual glowna_klasa // czy mogę tutaj pominąć słowo virtual? 
[...]

class c :  public virtual glowna_klasa // czy mogę tutaj pominąć słowo virtual? 
[...]
class a : public Gunsligner, public Poker // W zamian dopisać tu? 

Czy w powszechnie stosuje się tego rodzaju 'mechanizmy' w codziennym kodowaniu? Czy są one często wykorzystywane? 

 

Pozdrawiam  serdecznie 

1
komentarz 23 kwietnia 2020 przez tkz Nałogowiec (42,060 p.)

2 odpowiedzi

+1 głos
odpowiedź 23 kwietnia 2020 przez DragonCoder Nałogowiec (36,500 p.)
Dziedziczenie ma sens, jesli wykona sie je z glowa. Jak wyzej tkz wyslal glownie diamentowy problem i sam go napomknales. Wiec po co mam dziedziczyc po b i c, skoro i tak wyjdzie mi dziedziczenie z klasy bazowej a. Tak wiec lepiej chyba dziedziczyc po klasie bazowej i dodac wlasne metody. O tym mowi tez generalizacja.

W sofcie, chyba probuje sie raczej tworzyc agregacja zamiast dziedziczenia, jesli jest to tylko mozliwe
+1 głos
odpowiedź 24 kwietnia 2020 przez j23 Mędrzec (195,240 p.)

Jeśli a ma dziedziczyć po b i c, to nie musisz dawać virtual. b i c muszą/powinny dziedziczyć wirtualnie po glowna_klasa.

Powinieneś unikać diamentowego dziedziczenia.

Podobne pytania

0 głosów
0 odpowiedzi 447 wizyt
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 27 czerwca 2018 w C i C++ przez 99xkubax99 Obywatel (1,780 p.)
0 głosów
0 odpowiedzi 365 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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
...