• 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

Regular Expression Matching

VMWare SDEII Interview

Sort an array according to the order defined by another array

Facebook Interview Question : Interleave List

Puzzle : 100 doors in a row Visit and Toggle the door. What state the door will be after nth pass ?

Given a sorted array and a number x, find the pair in array whose sum is closest to x

Printing Longest Common Subsequence

Find loop in Singly linked list

Find next greater number with same set of digits

Connect n ropes with minimum cost

Top 10 Interviews Techniqes for Campus Interview in IIT NIT BITS for MTech

Inorder and Preorder traversals of a Binary Tree given. Output the Postorder traversal of it.

Circular Linked List

Implement a generic binary search algorithm for Integer Double String etc

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

Naurki.com Security Breach

CodeChef’ RRCOPY

Serialise Deserialise N-ary Tree

Linked List V/S Binary Search Tree

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

Sequence Finder Dynamic Programming

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

Longest Increasing Subsequence

Flipkart Set 1 On Campus with Answers

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

SAP Off Campus Hiring_ March 2015 Verbal Skills

Leetcode: Merge Intervals

Password Predictor

Find min element in Sorted Rotated Array (With Duplicates)

Rectangular chocolate bar Create at least one piece which consists of exactly nTiles tiles

Copyright © 2025 · Genesis Framework · WordPress · Log in