- 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
Staying up to the mark is what defines me. Hi all! I’m Rabecca Fatima a keen learner, great enthusiast, ready to take new challenges as stepping stones towards flying colors.
Leave a Comment