• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar
  • Skip to secondary sidebar

GoHired

Interview Questions asked in Google, Microsoft, Amazon

Join WeekEnd Online Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

  • Home
  • Best Java Books
  • Algorithm
  • Internship
  • Certificates
  • About Us
  • Contact Us
  • Privacy Policy
  • Array
  • Stack
  • Queue
  • LinkedList
  • DP
  • Strings
  • Tree
  • Mathametical
  • Puzzles
  • Graph

C++ OOPs Part2

November 5, 2014 by Dhaval Dave

Polymorphism & Overloading

Polymorphism 

Polymorphism occurs when there is a hierarchy of classes and they are related by inheritance.

C++ polymorphism means that a call to a member function will cause a different function to be executed depending on the type of object that invokes the function.

Static linkage or Early binding or Compile Time Polymorphism

Consider the following example where a base class has been derived by other two classes:

class Shape {
protected:
int width, height;
public:
Shape( int a=0, int b=0)
{
width
= a;
height
= b;
}
int area()
{
cout
<< "Parent class area :" <<endl;
return 0;
}
};
class Rectangle: public Shape{
public:
Rectangle( int a=0, int b=0):Shape(a, b) { }
int area ()
{
cout
<< "Rectangle class area :" <<endl;
return (width * height);
}
};
class Triangle: public Shape{
public:
Triangle( int a=0, int b=0):Shape(a, b) { }
int area ()
{
cout
<< "Triangle class area :" <<endl;
return (width * height / 2);
}
};
// Main function for the program
int main( )
{
Shape *shape;
Rectangle rec(10,7);
Triangle tri(10,5);

// store the address of Rectangle
shape
= &rec;
// call rectangle area.
shape
->area();

// store the address of Triangle
shape
= &tri;
// call triangle area.
shape
->area();

return 0;
}

When the above code is compiled and executed, it produces the following result:

Parent class area
Parent class area

The reason for the incorrect output is that the call of the function area() is being set once by the compiler as the version defined in the base class. This is called static resolution of the function call, or static linkage – the function call is fixed before the program is executed. This is also sometimes called early binding because the area() function is set during the compilation of the program.

Dynamic linkage or Late binding or Run time Polymorphism.

But now, let’s make a slight modification in our program and precede the declaration of area() in the Shape class with the keyword virtual so that it looks like this:

virtual int area()
{
cout
<< "Parent class area :" <<endl;
return 0;
}

After this slight modification, when the previous example code is compiled and executed, it produces the following result:

Rectangle class area
Triangle class area

Virtual Function

A virtual function is a function in a base class that is declared using the keyword virtual. Defining in a base class a virtual function, with another version in a derived class, signals to the compiler that we don’t want static linkage for this function.<br /> <br /> What we do want is the selection of the function to be called at any given point in the program to be based on the kind of object for which it is called. This sort of operation is referred to as dynamic linkage, or late binding.<br /> <br /> <h3 style=” left=”” text-align:=””> Pure Virtual Functions:

It’s possible that you’d want to include a virtual function in a base class so that it may be redefined in a derived class to suit the objects of that class, but that there is no meaningful definition you could give for the function in the base class.

We can change the virtual function area() in the base class to the following:

 // pure virtual function
virtual int area() = 0;

as

Overloading (Operator and Function)

Function overloading in C++:
You can have multiple definitions for the same function name in the same scope. The definition of the function must differ from each other by the types and/or the number of arguments in the argument list. You can not overload function declarations that differ only by return type.
class printData 
{
public:
void print(int i) {
cout
<< "Printing int: " << i << endl;
}

void print(double f) {
cout
<< "Printing float: " << f << endl;
}

void print(char* c) {
cout
<< "Printing character: " << c << endl;
}
};

int main(void)
{
printData pd
;

// Call print to print integer
pd
.print(5);
// Call print to print float
pd
.print(500.263);
// Call print to print character
pd
.print("Hello C++");

return 0;
}

Overloaded operators are functions with special names the keyword operator followed by the symbol for the operator being defined. Like any other function, an overloaded operator has a return type and a parameter list.

Box operator+(const Box&);
Box operator+(const Box&, const Box&);

as

Similar Articles

Filed Under: problem Tagged With: c

Reader Interactions

Primary Sidebar

Join WeekEnd Online/Offline Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

Join WeekEnd Online/Offline Batch from 4-April-2020

WhatsApp us

Secondary Sidebar

Custom Search

  • How I cracked AMAZON
  • LeetCode
  • Adobe
  • Amazon
  • Facebook
  • Microsoft
  • Hacker Earth
  • CSE Interview

Top Rated Questions

Knight Tour Problem (Graph – Breadth First Search)

Interfaces in C++ (Abstract Classes in C++)

Advanced SQL Injection

Wrong Directions given find minimum moves so that he can reach to the destination

Number of Islands BFS/DFS

Subset Sum Problem Dynamic programming

Find shortest distances between every pair of vertices ( Dynamic Programming Floyd Warshall Algorithm)

The greedy coins game Dynamic Programming

Find two non repeating elements in an array of repeating elements

robot standing at first cell of an M*N matrix. It can move only in two directions, right and down. In how many ways, it can reach to the last cell i.e. (M, N) Code it

Count Possible Decodings of a given Digit Sequence

Difference between a LinkedList and a Binary Search Tree BST

How strtok() Works

Trapping Rain Water

Introduction To Number Theory ( Part 1 )

There are N nuts and N bolts, u have to find all the pairs of nuts and bolts in minimum no. of iteration

Stock Buy Sell to Maximize Profit

Maximum of all subarrays of size k

System Design: Designing a LLD for Hotel Booking

Memory Efficient LinkedList

K’th Largest Element in BST when modification to BST is not allowed

C++ OOPs Part1

LeetCode : Word Search

TicTacToe Game As Asked in Flipkart

Generate next palindrome number

Given a float number convert it into the string WITHOUT using any inbuilt Function

Stickler thief

Find and print longest consecutive number sequence in a given sequence in O(n)

Maximum difference between two elements s.t larger element appears after the smaller number

Print all nodes that are at distance k from a leaf node

Copyright © 2025 · Genesis Framework · WordPress · Log in