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

Ako vzniká nejednoznačnosť pri viacnásobnom dedení?
Ako vzniká nejednoznačnosť pri viacnásobnom dedení?
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: