Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Čo je virtuálne dedičstvo?

Virtuálne dedičstvo je mechanizmus C++ na vytváranie základnej triedy, ktorú možno bezpečne zdediť z viacerých časov, bez toho, aby spôsoboval problémy s krájaním objektov alebo chybami za behu.

Zvážte nasledujúci príklad:

``` c++

// Základná trieda

trieda Zviera {

verejné:

názov reťazca;

};

// Odvodená trieda 1

trieda Pes :public Zviera {

verejné:

strunové plemeno;

};

// Odvodená trieda 2

trieda Mačka :verejné Zviera {

verejné:

farba šnúrky;

};

// Odvodená trieda 3 (dedí od psa aj mačky)

trieda domáce zviera :verejný pes, verejná mačka {

verejné:

//...

};

```

Bez virtuálneho dedenia by trieda `Pet` zdedila dve kópie základnej triedy `Animal`, čo by mohlo viesť k chybám behu alebo krájaniu objektov (kde je skonštruovaná iba časť objektu `Pet`). Aby sme tomu zabránili, môžeme použiť virtuálne dedičstvo zadaním kľúčového slova „virtuálne“ v deklarácii základnej triedy:

``` c++

// Základná trieda s virtuálnou dedičnosťou

trieda Zviera {

verejné:

názov reťazca;

};

```

Použitím virtuálnej dedičnosti zdedí trieda „Pet“ iba jednu kópiu základnej triedy „Animal“, čím sa zabezpečí správne správanie a zabráni sa chybám pri behu.

Výhody:

1. Riešenie nejasností: Pomáha vyriešiť nejednoznačnosť, keď viaceré základné triedy majú rovnakú členskú funkciu alebo údajový člen.

2. Znížená réžia pamäte: Zabraňuje krájaniu objektov, znižuje réžiu pamäte a zlepšuje výkon.

3. Flexibilita: Umožňuje komplexné hierarchie dedičnosti, kde môžu odvodené triedy dediť z viacerých základných tried.

Kedy použiť virtuálne dedičstvo:

- Keď máte viacnásobné dedičstvo a chcete sa vyhnúť nejednoznačným základným členom alebo krájaniu objektov.

- Keď chcete zdieľať spoločnú funkčnosť medzi viacerými odvodenými triedami bez duplikovania kódu.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené