Categories: C++

Upcasting in C++

  • Upcasting is the process of creating the derived class’s pointer or reference from the base class’s pointer or reference.
  • It refers to the process of converting a derived class’s reference or pointer to a base class’s reference or pointer.
  • Upcasting is a safer casting technique than downcasting.
  • It supports public inheritance, which allows references to be implicitly cast from one class to another without an explicit typecast.
  • Upcasting by default creates an is-a relationship between the base and derived classes.

For instance,

#include <iostream>
using namespace std;

// This is Parent class
class Base
{
  public:
    void print()
    {
      cout << "Parent Class print function" << endl;
    }
};

// This is Child class
class Subclass : public Base
{
  public:
  void print()
  {
    cout << "Child Class print function" << endl; 
  } 
};

int main() 
{ 
  Base *base_object; 
  Subclass sub_object; 
  base_object = &sub_object; 

  // also as we are dealing with pointers instead of . we need to use ->
  base_object->print();

  return 0;
}
Output:
Parent Class print function

Downcasting is the inverse of Upcasting, in which we convert a reference or pointer from a Super class to a reference or pointer from a derived class. We’ll learn more about Downcasting later.

Functions that are never Inherited:
  • Constructors and Destructors are not inherited and thus cannot be overridden.
  • Additionally, the assignment operator ‘=’ is never inherited. It is overloaded but not inheritable by subclasses.
Static member functions and inheritance:

Static member functions behave similarly to non-static member functions:

  • They inherit into the derived class.
  • When we redefine a static member, all the base class’s overloaded functions are hidden.
  • If the signature of a function in the base class is changed, all base class versions with that function name are hidden (this is a variation of the previous point).

Note: also read about Order of Constructor Call in C++

Follow Me

If you like my post please follow me to read my latest post on programming and technology.

https://www.instagram.com/coderz.py/

https://www.facebook.com/coderz.py

Share
Published by
Rabecca Fatima

Recent Posts

What is object oriented design patterns

A design pattern is a reusable solution to a commonly occurring problem in software design. They…

5 months ago

Factory Method Design Pattern in OODP

Factory Method is a creational design pattern that deals with the object creation. It separates…

5 months ago

Find Intersection of Two Singly Linked Lists

You are given two singly linked lists that intersect at some node. Your task is…

11 months ago

Minimum Cost to Paint Houses with K Colors

A builder plans to construct N houses in a row, where each house can be…

11 months ago

Longest Absolute Path in File System Representation

Find the length of the longest absolute path to a file within the abstracted file…

11 months ago

Efficient Order Log Storage

You manage an e-commerce website and need to keep track of the last N order…

12 months ago