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

Generate Parenthesis | Intuition + Code | Recursion Tree | Backtracking | Java

Problem Statement: Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. Example…

3 months ago

Square Root of Integer

Given an integer A. Compute and return the square root of A. If A is…

1 year ago

Build Array From Permutation

Given a zero-based permutation nums (0-indexed), build an array ans of the same length where…

1 year ago

DSA: Heap

A heap is a specialized tree-based data structure that satisfies the heap property. It is…

2 years ago

DSA: Trie

What is a Trie in DSA? A trie, often known as a prefix tree, is…

2 years ago

Trees: Lowest Common Ancestor

What is the Lowest Common Ancestor? In a tree, the lowest common ancestor (LCA) of…

2 years ago