0% found this document useful (0 votes)
580 views

Ambiguity in Inheritance

This document discusses ambiguity that can occur in hybrid inheritance in C++. It defines hybrid inheritance as combining more than one type of inheritance, such as hierarchical and multiple inheritance. Ambiguity arises when base and derived classes have members with the same name, making the access to the base class member ambiguous. To resolve ambiguity, the document suggests using scope resolution or virtual functions. It provides a code example demonstrating ambiguity errors when accessing member "a" from multiple parent classes of class D in a hybrid inheritance scenario. The example then shows how to resolve the ambiguity using scope resolution to access "a" from the specific parent class.

Uploaded by

Aditya Kumar
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
580 views

Ambiguity in Inheritance

This document discusses ambiguity that can occur in hybrid inheritance in C++. It defines hybrid inheritance as combining more than one type of inheritance, such as hierarchical and multiple inheritance. Ambiguity arises when base and derived classes have members with the same name, making the access to the base class member ambiguous. To resolve ambiguity, the document suggests using scope resolution or virtual functions. It provides a code example demonstrating ambiguity errors when accessing member "a" from multiple parent classes of class D in a hybrid inheritance scenario. The example then shows how to resolve the ambiguity using scope resolution to access "a" from the specific parent class.

Uploaded by

Aditya Kumar
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 12

AMBIGUITY in HYBRID

INHERITANCE
-by Aditya kumar Vishwakarma
-JK702
INHERITANCE

► The capability of a class to derive properties and characteristics from another


class is called Inheritance. Inheritance is one of the most important feature of
Object Oriented Programming.

► Sub Class: The class that inherits properties from another class is called Sub
class or Derived Class.

► Super Class:The class whose properties are inherited by sub class is called
Base Class or Super class.
TYPES OF INHERITANCE

► Single Inheritance: In single inheritance, a class is allowed to inherit from


only one class. i.e. one sub class is inherited by one base class only.
► Multiple Inheritance: Multiple Inheritance is a feature of C++ where a class
can inherit from more than one classes. i.e; one sub class is inherited from
more than one base classes.
► Multilevel Inheritance: In this type of inheritance, a derived class is created
from another derived class.
► Hierarchical Inheritance: In this type of inheritance, more than one sub class
is inherited from a single base class. i.e. more than one derived class is
created from a single base class.
► Hybrid (Virtual) Inheritance: Hybrid Inheritance is implemented by
combining more than one type of inheritance. For example: Combining
Hierarchical inheritance and Multiple Inheritance.
HYBRID INHERITANCE
AMBIGUITY

When you derive classes, ambiguities can result if


base and derived classes have members with the
same names. Access to a base class member is
ambiguous if you use a name or qualified name that
does not refer to a unique function or object. The
declaration of a member with an ambiguous name
in a derived class is not an error. The ambiguity is
only flagged as an error if you use the ambiguous
member name.
Ambiguity in hybrid
inheritance
program for ambiguity

#include<iostream.h> class ClassD : public ClassB, public ClassC


#include<conio.h> {
class ClassA public:
{ int d;
public: };
int a;
};
class ClassB : public ClassA
{
public:
int b;
};
class ClassC : public ClassA
{
public:
int c;
};
void main()
{

ClassD obj;
//obj.a = 10; //Statement 1, Error occur
//obj.a = 100; //Statement 2, Error occur
obj.ClassB::a = 10; //Statement 3
obj.ClassC::a = 100; //Statement 4

obj.b = 20;
obj.c = 30;
obj.d = 40;

cout<< "\n A from ClassB : "<< obj.ClassB::a;


cout<< "\n A from ClassC : "<< obj.ClassC::a;

cout<< "\n B : "<< obj.b;


cout<< "\n C : "<< obj.c;
cout<< "\n D : "<< obj.d;

}
REAL TIME EXAMPLE
I went out in the woods and found a bat.Was it
a little furry winged creature? Or a baseball
bat? Because the word “bat” is polysemous, it
provides us with a very simple example of
semantic ambiguity.
how to resolve ambiguity.

1. using scope resolution

1. using virtual function


THANK YOU
bye

You might also like