ProDeveloperTutorial.com

Tutorials and Programming Solutions
Menu
  • Shell Scripting
  • System Design
  • Linux System Programming
  • 4g LTE
  • Coding questions
  • C
  • C++
  • DSA
  • GIT
  • 450 DSA Cracker
  • 5G NR
  • O-RAN

C++ chapter 38: Upcasting and downcasting in C++

prodevelopertutorial February 26, 2020

Upcasting: It is the process of converting derived-class reference or pointer to the base class.

Downcasting: It is the process of converting base-class reference or pointer to the derived class.

Upcasting:

Here the derived class pointer is converted to base class.
This is allowed in inheritance.
There is no need of explicit typecasting.
There is an is-a relationship between the base class and derived class.
Object-slicing can occur in upcasting.

Example of upcasting:

#include <iostream> // std::cout

// for more tutorials visit www.ProDeveloperTutorial.com

using namespace std;

class Base 
{
public:
    void baseFun() 
    {
        cout<<"Base Function"<<endl;
    }
};

class Derived: public Base 
{
public:
    void derivedFun()
    {
        cout<<"Derived Fun"<<endl;
    }
};

int main( ) 
{ 
    Derived dObj;

//upcasting - implicit upcasting is allowed
    Base *bPtr = &dObj;

    bPtr -> baseFun();

    return 0; 
}

Output:

Base Function

Downcasting:

It converts base class pointer to derived class pointer.
You need to explicitly type cast during downcasting.

#include <iostream> // std::cout

// for more tutorials visit www.ProDeveloperTutorial.com

using namespace std;

class Base 
{
public:
    void baseFun() 
    {
        cout<<"Base Function"<<endl;
    }
};

class Derived: public Base 
{
public:
    void derivedFun()
    {
        cout<<"Derived Fun"<<endl;
    }
};

int main( ) 
{ 
    Base bObj;

// explicit type cast is required
    Derived *dPtr = (Derived *) &bObj;
    dPtr -> derivedFun();

    return 0; 
}

 

Output:

Derived Fun

 

List Of Tutorials available in this website:

C Programming 20+ ChaptersC++ Programming 80+ Chapters
100+ Solved Coding QuestionsData Structures and Algorithms 85+ Chapters
System design 20+ ChaptersShell Scripting 12 Chapters
4g LTE 60+ ChaptersMost Frequently asked Coding questions
5G NR 50+ ChaptersLinux System Programming 20+ chapters
Share
Email
Tweet
Linkedin
Reddit
Stumble
Pinterest
Prev Article
Next Article

About The Author

prodevelopertutorial

Follow this blog to learn more about C, C++, Linux, Competitive Programming concepts, Data Structures.

ProDeveloperTutorial.com

Tutorials and Programming Solutions
Copyright © 2022 ProDeveloperTutorial.com