+91 90691 39140 | +1 253 214 3115 | info@hub4tech.com | hub4tech

C++ Inheritance Interview Questions and Answers

1
Explain about Protected Inheritance?

Public and Protected members are derived as protected members.

2
Explain the difference between Overriding vs. overloading?

Overloading helps to create different behaviors of methods with the same name and scope. For instance we can overload a method to return float values and integer values.
Overriding on the other hand changes the behavior of a class to make it behave different than its parent class.

3
Explain pure virtual functions?

Pure virtual functions are also called 'do nothing functions'.
e.g. virtual void abc() = 0;
When a pure virtual fnction is declared in the base class, the compiler necessitates the derived classes to define those functions or redeclare them are pure virtual functions. The classes containing pure virtual functions cannot be used to declare objects of their own. Such classes are called as abstract base classes.

4
What is a base class?

Inheritance is one of the important features of OOP which allows us to make hierarchical classifications of classes. In this, we can create a general class which defines the most common features. Other more specific classes can inherit this class to define those features that are unique to them. In this case, the class from which other classes are inherited is referred as base class.

For example, a general class vehicle can be inherited by more specific classes car and bike. The class vehicle is base class in this case.

class Base
{
int a;
public:
Base()
{
a = 1;
cout <<”inside Base class”;
}
};

class Derived:: public Base //class Derived is inheriting class Base publically
{
int b;
public:
Derived()
{
b = 1;
cout <<”inside Derived class”;
}
};

5
Explain about virtual destructor?

If the destructor in the base class is not made virtual, then an object that might have been declared of type base class and instance of child class would simply call the base class destructor without calling the derived class destructor.

Hence, by making the destructor in the base class virtual, we ensure that the derived class destructor gets called before the base class destructor.

class a
{
public:
a(){printf("nBase Constructorn");}
~a(){printf("nBase Destructorn");}
};

class b : public a
{
public:
b(){printf("nDerived Constructorn");}
~b(){printf("nDerived Destructorn");}
};
int main()
{
a* obj=new b;
delete obj;
return 0;
}

Output:
Base Constructor
Derived Constructor
Base Destructor

By Changing
~a(){printf("nBase Destructorn");}
to
virtual ~a(){printf("nBase Destructorn");}

Output:
Base Constructor
Derived Constructor
Derived Destructor
Base Destructor

Copyright ©2015 Hub4Tech.com, All Rights Reserved. Hub4Tech™ is registered trademark of Hub4tech Portal Services Pvt. Ltd.
All trademarks and logos appearing on this website are the property of their respective owners.
FOLLOW US