Logo da.boatexistence.com

Hvordan opstår tvetydighed ved multipel arv?

Indholdsfortegnelse:

Hvordan opstår tvetydighed ved multipel arv?
Hvordan opstår tvetydighed ved multipel arv?

Video: Hvordan opstår tvetydighed ved multipel arv?

Video: Hvordan opstår tvetydighed ved multipel arv?
Video: Strikke hæfte ( smart ved farveskift) 2024, Kan
Anonim

Tvetydigheden, der opstår ved brug af multipel nedarvning, refererer til en afledt klasse med mere end én overordnet klasse, der definerer egenskaber og/eller metoder med samme navnFor eksempel, hvis 'C' arver fra både 'A' og 'B' og klasserne 'A' og 'B', definerer begge en egenskab ved navn x og en funktion ved navn getx.

Hvad er tvetydigheden i multipel arv?

Tvetydighed kommer hovedsageligt i multiple inheritance To basisklasser har funktioner med samme navn, mens en klasse afledt af begge basisklasser ikke har nogen funktion med dette navn. Når vi kalder funktionen med afledt klasses objekt, kan compileren ikke finde ud af, hvilken af de to funktioner der menes.

Er der nogen chance for tvetydighed i begrebet multipel arv?

Tvetydighed i nedarvning kan defineres som når en klasse er afledt for to eller flere basisklasser, så der er chancer for, at basisklasserne har funktioner med samme navn. Så det vil forvirre afledt klasse at vælge mellem lignende navnefunktioner.

Hvilken tvetydighed opstår ved multipel arv, og hvordan kan det løses?

Der kan opstå en tvetydighed når der findes flere stier til en klasse fra den samme basisklasse Dette betyder, at en underklasse kan have duplikerede sæt medlemmer, der er nedarvet fra en enkelt basisklasse. Dette kan løses ved at bruge en virtuel basisklasse. … En sådan basisklasse er kendt som virtuel basisklasse.

Hvad er tvetydighedsarv Hvordan overvinder du forklare med eksempel?

Antag for eksempel, at to klasser ved navn A og B begge har et medlem ved navn x, og en klasse ved navn C arver fra både A og B. Et forsøg på at få adgang til x fra klasse C ville være tvetydigt. Du kan løse tvetydigheder ved at kvalificere et medlem med dets klassenavn ved at bruge scope resolution (::) operatoren.

Anbefalede: