Top Banner
Topic 1 01/26/22
14

Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Jan 05, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Topic

104/20/23

Page 2: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Submitted By:

Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas Khan : Roll No: 6743

204/20/23

Page 3: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Virtual Function:

304/20/23

A type of function that appears to exist in some part of a program but does not exist really is called virtual function. A virtual function is a member function that is declared within a base class (Parent Class) and redefined by a derived class (Child Class). Virtual functions are used to implement polymorphism. They enable the user to execute completely different function by the same function call.

To create virtual function, precede the function’s declaration in the base class with the keyword virtual.

Page 4: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Example:#include <iostream.h>

#include <conio.h>

Class A {         int a;         public:         A( )         {                 a = 1;         } 

        virtual void show( )         {                     cout <<a;        } };

Class B: public A {          int b;          public:          B( ) 

  {                  b = 2;          }         virtual void show()          {                    cout <<b;         }};

  int main() 

{            A *pA;            B oB;            pA = &oB;            pA->show();            return 0; } Since pA points to object of B and show( ) is virtual in base class A.

Output =2404/20/23

Page 5: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Pure Virtual Function:

A type of virtual function that has no body is known as pure virtual function. A pure virtual function  that has the notation "= 0" in the declaration of that function.

504/20/23

Page 6: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Example:

Simple example of a pure virtual function in C++

Class someclass {

public:

virtual void pure_virtual ( ) = 0; / / a pure virtual function

/ / note that there is no function body

};

604/20/23

Page 7: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

When should pure virtual functions be used in C++?

In C++, a regular, "non-pure" virtual function provides a definition, which means that the class in which that virtual function is defined does not need to be declared abstract. The pure virtual functions are used in the classes which are not used directly. The user can inherit the class and then override the pure virtual function in the child class.

704/20/23

Page 8: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Abstract classes:

A type of class that contains any pure virtual function is called abstract class. An abstract class cannot be used direclty. It means that no object of an abstract class can be created. However, a child class can inherit an abstract class and use it by overriding its pure virtual function. It is also defined by using the keyword “virtual”.

804/20/23

Page 9: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Characteristics of Abstract Class: Abstract classes are used to create a model

class. Abstract class can have normal functions and

variables along with a pure virtual function. Abstract classes are mainly used for Up

casting, so that its derived classes can use its interface.

904/20/23

Page 10: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Example: class Base

//Abstract base class{ public: virtual void show() = 0; //Pure Virtual Function}; class Derived: public Base{ public: void show() { cout << "Implementation of Virtual Function in Derived class"; }};

 int main(){ Base obj; //Compile Time Error Base *b; Derived d; b = &d; b->show( );}

1004/20/23

Page 11: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Virtual Base Classes

A class that is inherited by child classes it is known as virtual base class. The virtual base classes are necessary in a situation where the member of base class is duplicated in multilevel inheritance. This can be achieved by preceding the base class’ name with the word virtual.

1104/20/23

Page 12: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Example: #include <iostream.h> #include <conio.h> Class Parent

{  protected:

int n; }; class Child 1: public Parent { }; class Child 2 : public Parent { }; class Baby : public Child 1, public Child 2

{ public : void set ( ) { n = 5; cout <<”n=”<<n<<endl’ } };     void main ( ) { Baby obj; Obj.set ( ); getch ( ); }

Output is: “5”1204/20/23

Page 13: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

Flow chart about above program is:

1304/20/23

Page 14: Topic 1 11/18/2015. Submitted By: Arslan Ali : Roll No: 6703 Ali Ahmad : Roll No: 6710 Ameer Moavia : Roll No: 6734 Abdul Manam : Roll No: 6738 Agha Waqas.

1404/20/23