coderz.py

Keep Coding Keep Cheering!

Upcasting in C++

Accessing Elements
  • 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

Leave a Comment

Your email address will not be published. Required fields are marked *

Advertisement