function overloading and overriding

16
Function Overloading and Overriding PRESENTED BY: RAJAB ALI

Upload: rajab-ali

Post on 12-Apr-2017

431 views

Category:

Engineering


33 download

TRANSCRIPT

Page 1: Function overloading and overriding

Function Overloading and Overriding

PRESENTED BY:RAJAB ALI

Page 2: Function overloading and overriding

[email protected]

Overloading Introduction

One of the more powerful features for code readability and usability is that of overloading. Like most things, it can be used for both good and

evil.

Function overloading is the availability of various functions within a class that differ from each other in function signature i.e. various functions share same name with different parameter types or number of parameters.

Page 3: Function overloading and overriding

[email protected]

Functions in C++

A function in C++ is not uniquely identified by its name alone.

Each function has a function signature, consisting of two elements. The name of the method The order and type of its parameters.

Together, these act as the unique identifier for a C++ method.

The following thus are two different functions: addTwo (int x, int y); addTwo (float x, float y);

Page 4: Function overloading and overriding

[email protected]

Function Overloading

The process of providing more than one functions with the same name is called method overloading. We say that these functions have been overloaded.

Overloading makes sure that we can provide a consistent and clear interface to our methods regardless of the parameters type. We don’t need addTwoInts and addTwoFloats, for

example.

Page 5: Function overloading and overriding

[email protected]

Function Overloading

The compiler works out which of the methods to call based on the parameters it is passed. It will check for the method that has a matching

signature. It will execute that method only.

If no matching signatures are found, a compile-time error will be displayed.

Page 6: Function overloading and overriding

[email protected]

Function Overloading

int add_nums (int one, int two) { return one + two;}int add_nums (float one, float two) { return (ceil (one + two));}

int main() { int answer_one, answer_two, answer_three;

answer_one = add_nums (1, 2); // Fine answer_two = add_nums (1.0f, 2.0f); // Fine answer_three = add_nums (1.0f, 2) // Error}

Page 7: Function overloading and overriding

[email protected]

Function Overriding

A function in child class overrides a function in parent class if they have the same name and type

signature.

Classes in which functions are defined must be in a parent-child relationship.

Overloading deals with multiple functions in the same class with the same name but different signatures

Overriding deals with two functions, one in a parent class and one in a child class, that have the same signature

Page 8: Function overloading and overriding

Function Overriding

class Base{ protected: void myFunc() { cout<<"Base Class’ Function"; } }; class Derived: public Base { public: void myFunc() { cout<<"Derived Class’ Function"; } void myFunc(int a) { cout<<"Derived Class’ Function with Parameter Value“<<a;} }; [email protected]

Page 9: Function overloading and overriding

Function Overriding

[email protected]

Page 10: Function overloading and overriding

[email protected]

Function Overriding

To access the overridden function of base class from derived class, scope resolution operator ::.

Following statement is used in derived class to access the base class get_data() function:

A::get_data; // Calling get_data() of class A.

Page 11: Function overloading and overriding

Code

class A{public:void fun(){ cout << "\n-> BASE <-\n"; }};class B:public A {public: void fun(){A::fun();cout << "-> DERIVED <-\n\n";}};void main(){B b1;b1.fun();} [email protected]

Page 12: Function overloading and overriding

[email protected]

Output

Page 13: Function overloading and overriding

Code

class A{public:void fun(){ cout << "\n-> BASE <-\n"; }};class B:public A {public: void fun(){cout << "-> DERIVED <-\n\n";}};void main(){A *a1;B b1;a1=&b1;a1->fun();} [email protected]

Page 14: Function overloading and overriding

Virtual function

class A{public:virtual void fun(){ cout << "\n-> BASE <-\n"; }};class B:public A {public: void fun(){cout << "-> DERIVED <-\n\n";}};void main(){A *a1;B b1;a1=&b1;a1->fun();} [email protected]

Page 15: Function overloading and overriding

[email protected]

Output

Page 16: Function overloading and overriding

[email protected]

Thank You