Logo nl.boatexistence.com

Hoe ambiguïteit ontstaat bij meervoudige overerving?

Inhoudsopgave:

Hoe ambiguïteit ontstaat bij meervoudige overerving?
Hoe ambiguïteit ontstaat bij meervoudige overerving?

Video: Hoe ambiguïteit ontstaat bij meervoudige overerving?

Video: Hoe ambiguïteit ontstaat bij meervoudige overerving?
Video: Multiple Inheritance in C++ with Ambiguity & Resolution | C++ programming for Beginners 2024, Mei
Anonim

De dubbelzinnigheid die ontstaat bij het gebruik van meervoudige overerving verwijst naar een afgeleide klasse met meer dan één bovenliggende klasse die eigenschap[en] en/of methode[s] met dezelfde naam definieertAls 'C' bijvoorbeeld overerft van zowel 'A' als 'B' en klassen 'A' en 'B', definiëren beide een eigenschap met de naam x en een functie met de naam getx.

Wat is de dubbelzinnigheid bij meervoudige overerving?

Ambiguïteit komt voornamelijk voor in meervoudige overerving Twee basisklassen hebben functies met dezelfde naam, terwijl een klasse afgeleid van beide basisklassen geen functie heeft met deze naam. Wanneer we de functie aanroepen met het object van de afgeleide klasse, kan de compiler er niet achter komen welke van de twee functies wordt bedoeld.

Is er enige kans op dubbelzinnigheid in het concept van meervoudige overerving?

Ambiguïteit in overerving kan worden gedefinieerd als wanneer één klasse wordt afgeleid voor twee of meer basisklassen, er kans is dat de basisklassen functies hebben met dezelfde naam. Dus het zal de afgeleide klasse verwarren om uit vergelijkbare naamfuncties te kiezen.

Welke ambiguïteit ontstaat bij meervoudige overerving en hoe kan dit worden opgelost?

Er kan onduidelijkheid ontstaan wanneer er meerdere paden bestaan naar een klasse uit dezelfde basisklasse Dit betekent dat een onderliggende klasse dubbele sets leden kan hebben die zijn overgenomen van een enkele basisklasse. Dit kan worden opgelost door een virtuele basisklasse te gebruiken. … Zo'n basisklasse staat bekend als virtuele basisklasse.

Wat is ambiguïteit overerving Hoe overwin je het uitleggen met een voorbeeld?

Veronderstel bijvoorbeeld dat twee klassen met de naam A en B beide een lid hebben met de naam x, en een klasse met de naam C erft van zowel A als B. Een poging om toegang te krijgen tot x vanuit klasse C zou dubbelzinnig zijn. U kunt ambiguïteit oplossen door een lid te kwalificeren met zijn klassenaam met behulp van de operator scope resolution (::).

Aanbevolen: