Downcasting in C++

Downcasting in C++ img

Downcasting in C++

Downcasting is a process of converting a base class reference to a derived class reference Here we would learn about downcasting in C++ which includes steps in downcasting and examples to help you learn easily and showing you how to implement downcasting.

What is Downcasting in C++?

The Downcasting is an opposite process to the upcasting, which converts the base class’s pointer or reference to the derived class’s pointer or reference. It manually cast the base class’s object to the derived class’s object, so we must specify the explicit typecast. The downcasting does not follow the is- a relation in most of the cases. It is not safe as upcasting. Furthermore, the derived class can add new functionality such as; new data members and class member’s functions that use these data members.

Steps in downcasting

  • Create objects for parent and child class
  • Create child class  pointer and assign  child reference with explicit typecasting
  • Using these pointer  call parent and child methods

Example program to demonstrate downcasting in C++

Run

#include <iostream>
using namespace std;

class parent			//parent class
{
public:
void show() 
  {
    cout << "Base class\n";
  } 
};

class child:public parent	//child class
{
public:
void display() 
  {
    cout << "Derived Class\n"; } }; int main() { parent p; child c; parent *ptr1 = &c; //impilict type casting allowed child *ptr2 = (child*)&c; //requires explicit cast //upcasting is safe ptr1->show();
  ptr2->display();
  //downcasting is unsafe
  ptr2->show();

return 0;
}

Output

Base class 
Derived class 
Base class
  • Downcasting requires an explicit type conversion because a derived class adds new data members and a class member functions that use this data member wouldn’t be applied to the base class
  • Downcasting is not as safe as upcasting because the derived class object can be always treated as the base class object its vice versa is not right, you will get access to the memory that does not have any information of the derived class object .this is the danger with downcasting

Prime Course Trailer

Related Banners

Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

Get over 200+ course One Subscription

Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others

Checkout list of all the video courses in PrepInsta Prime Subscription

Checkout list of all the video courses in PrepInsta Prime Subscription