• 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

Find Nearest Minimum number in left side in O(n)

Password Predictor

Binary Tree in Java

Sequence Finder Dynamic Programming

Reversal of LinkedList

BFS (Breath First Search)

building with N steps, we can take 1,2,3 steps calculate number of ways to reach at top of building

Word Break Problem

Find min element in Sorted Rotated Array (With Duplicates)

Doubly linked list

SAP Off Campus Hiring_ March 2015 Sample Questions

Linked List V/S Binary Search Tree

Generic Object Oriented Stack with Template

Stock Buy Sell to Maximize Profit

Fibonacci Hashing & Fastest Hashtable

Python Array String

Reliance Jio Software Developer Interview Experience

LeetCode: Binary Tree Maximum Path Sum

In Given LinkedList Divide LL in N Sub parts and delete first K nodes of each part

Maximum path sum between two leaves

Sort an array according to the order defined by another array

Naurki.com Security Breach

C Program for TAIL command of UNIX

Find if two rectangles overlap

Find the kth number with prime factors 3, 5 and 7

Minimum insertions to form a palindrome

Find loop in Singly linked list

Printing intermediate Integers between one element & next element of array

Amazon Interview On-Campus For Internship – 1

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

Copyright © 2025 · Genesis Framework · WordPress · Log in