Ako vzniká nejednoznačnosť pri viacnásobnom dedení?

Obsah:

Ako vzniká nejednoznačnosť pri viacnásobnom dedení?
Ako vzniká nejednoznačnosť pri viacnásobnom dedení?

Video: Ako vzniká nejednoznačnosť pri viacnásobnom dedení?

Video: Ako vzniká nejednoznačnosť pri viacnásobnom dedení?
Video: Multiple Inheritance in C++ with Ambiguity & Resolution | C++ programming for Beginners 2024, November
Anonim

Nejednoznačnosť, ktorá vzniká pri použití viacnásobnej dedičnosti, sa týka odvodenej triedy, ktorá má viac ako jednu rodičovskú triedu, ktorá definuje vlastnosti a/alebo metódy s rovnakým názvomNapríklad, ak 'C' dedí z 'A' aj 'B' a tried 'A' a 'B', obe definujú vlastnosť s názvom x a funkciu s názvom getx.

Aká je nejednoznačnosť pri viacnásobnom dedení?

Nejednoznačnosť sa vyskytuje hlavne v viacnásobnej dedičnosti Dve základné triedy majú funkcie s rovnakým názvom, zatiaľ čo trieda odvodená z oboch základných tried nemá žiadnu funkciu s týmto názvom. Keď voláme funkciu s objektom odvodenej triedy, kompilátor nedokáže zistiť, ktorá z týchto dvoch funkcií je myslená.

Existuje nejaká šanca na nejednoznačnosť v koncepte viacnásobného dedičstva?

Nejednoznačnosť v dedičnosti môže byť definovaná ako keď je jedna trieda odvodená pre dve alebo viac základných tried, potom existuje šanca, že základné triedy majú funkcie s rovnakým názvom. Takže to bude zmiasť odvodenú triedu pri výbere z podobných funkcií názvu.

Aká nejednoznačnosť vzniká pri viacnásobnom dedení a ako ju možno vyriešiť?

Nejednoznačnosť môže vzniknúť keď existuje niekoľko ciest k triede z rovnakej základnej triedy To znamená, že podradená trieda môže mať duplicitné sady členov zdedených z jednej základnej triedy. Dá sa to vyriešiť použitím virtuálnej základnej triedy. … Takáto základná trieda je známa ako virtuálna základná trieda.

Čo je dedičnosť nejednoznačnosti Ako prekonáte vysvetlenie na príklade?

Predpokladajme napríklad, že dve triedy s názvom A aj B majú člen s názvom x a trieda s názvom C dedí z A aj B. Pokus o prístup k x z triedy C by bol nejednoznačný. Nejednoznačnosť môžete vyriešiť kvalifikovaním člena jeho názvom triedy pomocou operátora rozlíšenia rozsahu (::).

Odporúča: