OOP THROUGH C++(R16) int *x; float *f; char *c;

Similar documents
Data type of a pointer must be same as the data type of the variable to which the pointer variable is pointing. Here are a few examples:

What is Polymorphism? Quotes from Deitel & Deitel s. Why polymorphism? How? How? Polymorphism Part 1

C++ 8. Constructors and Destructors

Polymorphism Part 1 1

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

(12-1) OOP: Polymorphism in C++ D & D Chapter 12. Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University

Unit III Virtual Functions. Developed By Ms. K.M.Sanghavi

cout<< \n Enter values for a and b... ; cin>>a>>b;

Object Oriented Programming. Solved MCQs - Part 2

Polymorphism. Zimmer CSCI 330

Inheritance, Polymorphism and the Object Memory Model


DE122/DC106 Object Oriented Programming with C++ DEC 2014

OBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe

MAHALAKSHMI ENGINEERING COLLEGE B TIRUCHIRAPALLI

MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION (Autonomous) (ISO/IEC Certified) Subject Name: Object Oriented Programming

Instantiation of Template class

public : int min, hour ; T( ) //here constructor is defined inside the class definition, as line function. { sec = min = hour = 0 ; }

Cpt S 122 Data Structures. Course Review Midterm Exam # 2

C++ Programming: Polymorphism

THE NAME OF THE CONSTRUCTOR AND DESTRUCTOR(HAVING (~) BEFORE ITS NAME) FUNCTION MUST BE SAME AS THE NAME OF THE CLASS IN WHICH THEY ARE DECLARED.

OBJECT ORIENTED PROGRAMMING AND DATA STRUCTURES

Object Oriented Programming & Design UNIT - III

Polymorphism 8. Polymorphism. Content. Normal Member Functions Accessed with Pointers. Polymorphism. Virtual Members Abstract Class

DELHI PUBLIC SCHOOL TAPI

Short Notes of CS201

Polymorphism. Miri Ben-Nissan (Kopel) Miri Kopel, Bar-Ilan University

POLYMORPHISM Polymorphism: the type Polymorphism taking many shapes type of object

CS201 - Introduction to Programming Glossary By

Increases Program Structure which results in greater reliability. Polymorphism

PROGRAMMING IN C++ COURSE CONTENT

QUIZ. Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed?

STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING

OOP Fundamental Concepts

Introduction to Programming Using Java (98-388)

Object-Oriented Programming (OOP) Fundamental Principles of OOP

Functions. Introduction :

CS 6456 OBJCET ORIENTED PROGRAMMING IV SEMESTER/EEE

SRM ARTS AND SCIENCE COLLEGE SRM NAGAR, KATTANKULATHUR

OBJECT ORIENTED PROGRAMMING. Ms. Ajeta Nandal C.R.Polytechnic,Rohtak

VIRTUAL FUNCTIONS Chapter 10

Chapter 1: Object-Oriented Programming Using C++

Darshan Institute of Engineering & Technology for Diploma Studies

Tokens, Expressions and Control Structures


POLYMORPHISM 2 PART. Shared Interface. Discussions. Abstract Base Classes. Abstract Base Classes and Pure Virtual Methods EXAMPLE

POLYMORPHISM 2 PART Abstract Classes Static and Dynamic Casting Common Programming Errors

CS250 Intro to CS II. Spring CS250 - Intro to CS II 1

C++ Important Questions with Answers

Object Oriented Programming. Assistant Lecture Omar Al Khayat 2 nd Year

Kapi ap l S e S hgal P T C p t u er. r S. c S ienc n e A n A k n leshw h ar ar Guj u arat C C h - 8

Object Oriented Programming with c++ Question Bank

Kapil Sehgal PGT Computer. Science Ankleshwar Gujarat Chapter 6 Inheritance Extending a Class

C++ Crash Kurs. Polymorphism. Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck

CS 162, Lecture 25: Exam II Review. 30 May 2018

Programming, numerics and optimization

Homework #3 CS2255 Fall 2012

[0569] p 0318 garbage

OBJECT ORIENTED PROGRAMMING

CHAPTER 4 FUNCTIONS. 4.1 Introduction

Solution: A pointer is a variable that holds the address of another object (data item) rather than a value.

JAYARAM COLLEGE OF ENGINEERING AND TECHNOLOGY Pagalavadi, Tiruchirappalli (An approved by AICTE and Affiliated to Anna University)

OOPS Viva Questions. Object is termed as an instance of a class, and it has its own state, behavior and identity.

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING OBJECT ORIENTED PROGRAMMING CLASS : THIRD SEMESTER CSE

Object-Oriented Programming, Iouliia Skliarova

Data Structures and Other Objects Using C++

엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University COPYRIGHTS 2017 EOM, HYEONSANG ALL RIGHTS RESERVED

The Address-of Operator &: The & operator can find address occupied by a variable. If var is a variable then, &vargives the address of that variable.

Inheritance, and Polymorphism.

Intro to OOP Visibility/protection levels and constructors Friend, convert constructor, destructor Operator overloading a<=b a.

CS250 Final Review Questions

I BCS-031 BACHELOR OF COMPUTER APPLICATIONS (BCA) (Revised) Term-End Examination. June, 2015 BCS-031 : PROGRAMMING IN C ++

15: Polymorphism & Virtual Functions

Developed By Strawberry

CMSC 202 Section 010x Spring Justin Martineau, Tuesday 11:30am

CS105 C++ Lecture 7. More on Classes, Inheritance

MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION (Autonomous) (ISO/IEC Certified) MODEL ANSWER

More C++ : Vectors, Classes, Inheritance, Templates

CS304 Object Oriented Programming Final Term

CS201- Introduction to Programming Current Quizzes

Data Abstraction. Hwansoo Han

Fast Introduction to Object Oriented Programming and C++

More C++ : Vectors, Classes, Inheritance, Templates. with content from cplusplus.com, codeguru.com

CS201 Latest Solved MCQs

What are the characteristics of Object Oriented programming language?

AC55/AT55 OBJECT ORIENTED PROGRAMMING WITH C++ DEC 2013

Pointers. 1 Background. 1.1 Variables and Memory. 1.2 Motivating Pointers Massachusetts Institute of Technology

PESIT Bangalore South Campus

Object Oriented Pragramming (22316)

G Programming Languages - Fall 2012

INHERITANCE: EXTENDING CLASSES

Outline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring

What is an algorithm?

Object-Oriented Programming

Paytm Programming Sample paper: 1) A copy constructor is called. a. when an object is returned by value

CHAPTER 1 Introduction to Computers and Programming CHAPTER 2 Introduction to C++ ( Hexadecimal 0xF4 and Octal literals 031) cout Object

Programming Languages: OO Paradigm, Polymorhism and Class Members

Object Oriented Programming CS250


Object Oriented Software Design II

Transcription:

What is pointer and how to declare it? Write the features of pointers? A pointer is a memory variable that stores the address of another variable. Pointer can have any name that is legal for other variables, and it is declared in the same way as other variables, but it is always denoted by * operator. Pointer declaration Pointer varible can be declared as follows: type *variable_name; where type is the data type pointed to by the pointer and variable name is pointer variable name. For example: int *x; float *f; char *c; 1. In the first statement, x is an integer pointer, and informs the compiler that it holds the address address of any integer variable. 2. Normal variables provide direct access to their own variables; where as pointer indirectly access the value of a variable to which it points. 3. The indirection (*) operator is used in two distinct ways with pointers: declaration and dereference. 4. When a pointer is declared, the star indicatesthat it is pointer, not a normal variable. 5. When a pointer is dereferenced, the indirection operator indicates that the value at that memory location stored in the pointer. 6. The & operator is the address of operator and it represents the address of a variable. The address of a variable is always a whole number. Example #include<iostream.h> int *p; int x=50; p= &x; cout<<"value of x="<<x<<"\taddress of x="<<&(unsigned)x; cout<<"value of x="<<*p<<"\taddress of x="<<(unsigned)p; //using cout() //using pointers value of x=50 value of x=50 address of x=1001 address of x=1001

Features of pointers 1. Pointers save memory space. 2. Execution time with pointers is faster, because data is manipulated with address. 3. Memory is accessed efficiently with pointers. The pointers assigns as well as releases the memory space. 4. Pointers are used with data structures. They are useful for representing two-dimensional and multi-dimensional arrays. 5. Pointers are used for file handling. 6. Pointers are used to allocate memory in a dynamic manner. 7. In C++, a pointer declared to a derived class cannot access the object of a derived class. How to create pointer to class? (OR) Explain about class pointers? We know that pointer is a variable that holds the address of another variable. In the same way, we can also define pointer to class. Here, the starting address of the member variables can be accessed. Thus such variables are called class pointers. Example: #include<iostream.h> #include<conio.h> class Man char name[25]; int age; ; Man m = Vijayanand,30; Man *ptr; ptr= &m; clrscr(); cout<< "\nname= "<<m->name; cout<< "\tage= "<<m->age; Name=Vijayanand Age=30 How to create pointer to object? Explain with an example? (OR) Explain object pointers? Explain with an example? Similar to variables, objects also have address. A pointer can point to a specified object. The following program illustrates this: Example: #include<iostream.h>

#include<conio.h> class Bill int qty; float price, amount; void getdata (int a, float b) qty = a; price = b; amount = a*b; void show() cout<< "\nquantity:"<<qty; cout<< "\nprice: "<<price; cout<< "\namount: "<<amount; ; clrscr(); Bill b; Bill *bptr = &b; bptr->getdata(5,20); (*bptr).show(); Quantity: 5 Price: 20 Amount: 100" Explain about this pointer with an example? Every object in C++ has access to its own address through an unseen pointer called this pointer. The this pointer is an implicit parameter to all member functions. Therefore, inside a member function, this may be used to refer to the invoking object. Friend functions do not have a this pointer, because friends are not members of a class. Only member functions have a this pointer. Let us understand this pointer with following example: #include<iostream.h> #include<conio.h> class Number int x; void input( )

cout<< "\nenter a number:"; cin>>x; void show() cout<< "\nthe Minimum number is :"<<x; ; Number min( Number n2 ) if(n2.x<x) return n2; else return *this; clrscr(); Number n,n1,n2; n1.input(); n2.input(); n= n1.min(n2); n.show(); Output Enter a number: 3 Enter a number: 5 The minimum number is 3. Pointer to Derived classes and Base class It is also possible to declare a pointer that points to the base class as well as the derived class. One pointer can point to different classes. For example, X is a base class and Y is a derived class. The pointer pointing to X can also point to Y. Example: #include<iostream.h> #include<conio.h> class A int b; void show( ) cout <<"\nb="<<b; //base class member function

; class B: public A int d; void show( ) //derived class member function cout <<"\nd="<<d; ; clrscr(): A *bp; A base; bp= &base; // bp->b=100; //Not accessible cout<< bp points to the base class object\n ; bp->show(); B b; cout<< \nbp points to the derived class object\n ; bp= &b; bp->b= 200; bp->show(); bp points to the base class object b = 100 bp points to the derived class object b= 200; Explain about polymorphism. (Binding) It is a Greek word. Poly means many. Morph means forms. Polymorphism means many forms After the inheritance it is another most important feature of OOP. In programing, polymorphism is the ability for objects of different classes related by inheritance to response differently to the same function call. In polymorphism, the member functions with same name are defined in base class and also in each derived class.

Fig. Types of polymorphism A program in C++ is executed sequentially line by line. After compilation each line of source code is transformed in to machine language. When a function call is encountered by the compiler during execution, the function call is transformed into machine language and a sequential address is provided. Thus, binding refers to the process that is used for converting functions and variables into machine language. The C++ supports two types of binding. They are: 1. Static ( or early ) binding 2. Dynamic ( or late ) binding Static binding This information is known to the compiler at the compile time and, therefore, compiler is able to select the appropriate function for a particular call at the compile time itself. So, it is called early binding or compile time binding or static linking. This type of polymorphism is implemented using overloaded functions and operators. The overloaded member functions are selected for invoking by matching arguments, both type and numbers. Example #include<iostream.h> class A int a; A( ) a = 1; void show( ) //base class member function cout <<"\na="<<a; ; class B: public A int b; B( ) b = 2; void show( ) //derived class member function cout <<"\nb="<<b; ;

A *bptr; A a; bptr= &a; bptr- >show(); B b; bptr= &b; bptr->show(); a=1 a=1 Dynamic binding The appropriate version of function will be invoked at runtime. Since the function is linked with a particular class much later after the compilation, this process is termed as late binding. This also known as dynamic binding, since the selection of appropriate function is done dynamically at runtime. It is implemented with virtual functions. Example #include<iostream.h> class A int a; A( ) a = 1; virtual void show( ) //base class member function cout <<"\na="<<a; ; class B: public A int b; B( ) b = 2; void show( ) cout <<"\nb="<<b; ; //derived class member function A *bptr; A a; bptr= &a; bptr->show();

B b; bptr= &b; bptr- >show(); a=1 b=2 Explain about base and derived class objects. In inheritance the derived class inherits all the properties of the base class. So pointers to the base class objects are type compatible with the pointers to derived class objects. So a base class pointer can point to the object of the derived class, but a pointer to the derived class object cannot point to the object of the base class. Example # include <iostream.h> class A protected: int a; A(int x) a=x; void show() cout<<"\nin base class"; cout<<"\na="<<a; ; class B : public A protected: int b; B(int x, int y) :A(x) b=y; void show() cout<<"\n In derived class B"; cout<<"\na="<<a;

cout<<"\nb="<<b; ; A *bptr; bptr= new A(20); bptr->show(); delete bptr; bptr = new B(10,20); bptr->show(); ((B*)bptr)->show(); //pointer to class A //pointer to class B Output In base class A a=20 In base class A a=10 In derived class B a=10 b=20 What is a virtual function? What are its rules? Explain with an example. (OR) Explain about runtime polymorphism with an example. In inheritance the same function name in both base and derived classes, the function in base class is declared as virtual using virtual keyword precedes its normal declaration. When a function is made virtual, C++ determines which function is to be used at run time based on the type of object pointed by the base pointer, rather than the type of the pointer. Rules: 1. The virtual functions must be members of some class. 2. They can t be static members. 3. They are accessed by using object pointers. 4. A virtual function can be friend of another class. 5. Constructors can t be virtual. Destructors can be declared as virtual. 6. The prototypes of base class and derived class must be same; otherwise the virtual mechanism is ignored. 7. The operator overloading is also supports the virtual mechanism. 8. If a base class contains virtual function and if the same function is not redefined in derived classes, in such a case, the base class function is invoked. Ex: # include <iostream.h> class Base

; void disp() cout<<"\nbase class disp() function"; virtual void show() cout<<"\n\nbase class show() function"; class Derived: public Base void disp() cout<<"\nderived class disp() function"; void show() cout<<"\n \nderived class show() function"; ; Base b; Derived d; Base *bptr; bptr=&b; bptr->disp( ); bptr->show( ); bptr=&d; bptr->disp( ); bptr->show( ); Output Base class disp() function Base class show() function Base class disp() function Derived class show() function What is a pure virtual function? What is its use? Pure virtual functions are also called do-nothing functions. These are always virtual functions. Virtual functions are defined with a null body and they may be overridden by derived classes. Pure virtual functions are defined as follows. virtual void disp( )= 0;

After declaration of a pure virtual function in a class, the class becomes abstract class and are not able to declare an object. The classes derived from the pure abstract classes are required to re-declare the pure virtual function. All other derived classes without pure virtual functions are called concrete classes. These classes can be used to create the objects. Example # include <iostream.h> class first protected: int b; first( ) //pure virtual function b=10; virtual void disp()=0; ; class second: public first int d; second( ) d=20; void disp( ) cout<<"\n b="<<b<<"\t d="<<d; ; void main( ) first *p; second s; p=&s; p->disp(); b=10 d=20 What is abstract class? When do we use it? Sometimes implementation of all function cannot be provided in a base class because we don t know the implementation. Such a class is called abstract class. The base class that has one or more pure virtual function is called the abstract base class. These classes designed as a framework or layout for derived classes. We cannot create objects of abstract classes. An abstract base class cannot be instantiated i.e. an object of its type cannot be defined but a pointer to an abstract base class can be defined. For example, let Shape be a base class. We cannot provide implementation of function area( ) in Shape, but we know every derived class must have implementation of area( ).

Example: #include <iostream.h> class Shape ; protected: float l; void getdata() cin >> l; virtual float area() = 0; class Square : public Shape float area() return l*l; ; class Circle : public Shape float area() return 3.14*l*l; ; // Abstract class Square s; Circle c; cout << "Enter the value of side: "; s.getdata(); cout<<"area of square: " << s.area(); cout<<"\nenter radius of a circle: "; c.getdata(); cout << "Area of circle: " << c.area(); Output Enter the value of side: 4 Area of square: 16 Enter radius of a circle: 2 Area of circle: 12.56 // virtual Function Write a program for illustrating working of virtual functions. (OR) How dynamic binding can takes place? Explain. (OR)

Write about VTABLE and VPTR. Binding means linking the function call and real function. Binding can be done either compile time or runtime. virtual keyword prevents the compiler from performing compile time binding and the binding is postponed until program execution. Example # include <iostream.h> class A private : int i; virtual void show() cout<<"\n In class A"; ; class B private : int i; void show() cout<<"\n In class B" ; class C void show() cout<<"\n in class C"; ; A a; B b; C c; cout<<"\n Size of a="<<sizeof(a); cout<<"\n Size of b="<<sizeof(b); cout<<"n Size of c="<<sizeof(c); Size of a = 4 Size of b = 2 Size of c = 1 The function show() of class A is virtual. Without virtual the size is 2, 2, 1. The size of object x with a virtual function in class A is 2 bytes for data member and 2 bytes for void pointer. Whenever a function is defined as virtual the compiler inserts a void pointer. In C++ the

object without any data member will occupies 1 byte because every object have an individual address. So, minimum size is considered. 1 is the minimum non-zero positive integer. When an object of base or derived class is created, a void pointer is inserted in the VTABLE. The VPTR points to the VTABLE. VTABLE is used to perform late binding. For late binding the compiler establishes VTABLE for class and its derived classes having virtual functions. If no function is redefined in the derived class that is defined as virtual in the base class, the compiler takes the address of the base class function. The VPTR should be initialized with the beginning address of the relevant VTABLE. It is used to determine the type of the object i.e. either base class object or derived class object. What are virtual destructors? Give an example. The virtual destructors are implemented same as virtual functions. In constructors and destructors hierarchy of base and derived classes are constructed and destructors of derived and base classes are called when a derived class object addressed by the base class pointer is deleted. For example, a derived class object constructed using a new operator. The base class pointer object that holds the address of the derived class object. When a base class pointer is destructed using the delete operator, the destructor of the base and derived class is executed. The following example explains this: #include <iostream.h> #include <conio.h> class B B( ) cout<<"\n In B constructor"; virtual ~B( ) cout<<"\n In B destructor"; ; class D : public B D( ) cout<<"\n In D constructor"; ~D() cout<<"\n In D destructor"; ;

B *ptr; ptr=new D; delete ptr; In B constructor In D constructor In D destructor In B destructor