Spolu s dědičností jsou v C++ nezbytné také konstruktory. A konstruktér je jedinečná členská funkce, která umožňuje inicializovat vlastnosti objektu. An Konstruktor dědičnosti je konstruktor používaný k inicializaci objektů základní třídy i odvozených tříd, které odvozená třída zdědila. The konstruktor dědičnosti je zodpovědný za inicializaci jak zděděných členů základní třídy, tak odvozených členů třídy. Aby toho dosáhl, konstruktor vyvolá konstruktor základní třídy a zajistí, že všechny členy odvozené třídy jsou správně inicializovány, včetně těch, které jsou zděděny ze základní třídy.
Zavoláním konstruktoru základní třídy a předáním nezbytných parametrů, konstruktor dědičnosti inicializuje členy základní třídy. To se provádí pomocí „základní třída (argumenty)“ inicializační seznam v konstruktoru. Další instrukce týkající se odvozené třídy jsou uvedeny v těle konstruktoru.
Syntaxe pro dědění třída v C++ je:
třída Odvozená třída : accessSpecifier BaseClass {
// členové třídy
} ;
Nová třída, která se v tomto případě tvoří, 'Odvozená třída', bude dědit od „Základní třída“. Úroveň přístupu ke zděděným členům je určena „ accessSpecifier“. C++ využívá tři typy specifikátorů přístupu, jmenovitě 'veřejné', 'soukromé', a 'chráněný' . Slovo 'veřejnost' označuje, že odvozená třída má přístup k veřejným členům základní třídy. Odvozená třída nemá přístup k členům základní třídy, podle 'soukromý' specifikátor. Odvozená třída má přístup k chráněným členům základní třídy, které mohou zdědit jejich podřízené třídy, podle 'chráněný' specifikátor.
Příklad dědičnosti v C++
Následující příklad ukazuje implementaci Dědictví v C++:
#include
použitím jmenný prostor std ;
třída Zvíře {
veřejnost :
prázdnota jíst ( ) {
cout << 'Můžu jíst!' << endl ;
}
prázdnota spát ( ) {
cout << 'Mohu spát!' << endl ;
}
} ;
třída Kočka : veřejnost Zvíře {
veřejnost :
prázdnota mňoukat ( ) {
cout << 'Můžu mňoukat!' << endl ;
}
} ;
int hlavní ( ) {
Kočka kočka 1 ;
kat1. jíst ( ) ;
kat1. spát ( ) ;
kat1. mňoukat ( ) ;
vrátit se 0 ;
}
Daný kód definuje dvě třídy, 'Zvíře' a 'Kočka' , kde 'Kočka' je odvozeno z 'Zvíře' . Obě třídy mají některé členské funkce, jako např „jíst“, „spát“ , a 'mňoukat' . Hlavní funkce vytváří objekt třídy 'Kočka' a volá zděděno funkce ze třídy 'Zvíře' stejně jako specifická funkce třídy 'Kočka' , který je 'mňoukat' . Program odešle text do konzole, což znamená, že kočka může jíst, spát a mňoukat.
Výstup
Když je třída odvozena, všechny členské proměnné a členské funkce základní třídy se přenesou do odvozené třídy. The zděděno přístupnost členů v odvozené třídě je určena specifikátorem přístupu. Odvozená třída může také nahradit nové funkce za ty, které již existují. Může přidávat nové implementace pro metody základní třídy a přidávat nové členské funkce a proměnné.
Je zásadní mít na paměti, že konstruktor dědičnosti musí být použit k explicitnímu volání konstruktoru základní třídy s nezbytnými parametry, pokud má základní třída výchozí konstruktor nebo pokud není k dispozici.
Závěr
Silnou vlastností dědictví v C++ umožňuje třídám znovu používat kód zděděním charakteristik a akcí od ostatních. Užitečná funkce C++ konstruktor dědičnosti umožňuje odvozeným třídám dědit vlastnosti, metody a datové členy základní třídy. S přidáním inicializačního seznamu pro konstruktory základní třídy je definována pomocí stejné syntaxe jako standardní konstruktor. Programátoři C++ mohou minimalizovat duplikaci kódu a vylepšit strukturu kódu pomocí konstruktor dědičnosti . Pro vytváření složitých hierarchií tříd v objektově orientovaném programování je to důležitý nástroj.