0% found this document useful (0 votes)
42 views147 pages

Presentations PPT Unit-4 OOP

Uploaded by

Zeel Goyani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views147 pages

Presentations PPT Unit-4 OOP

Uploaded by

Zeel Goyani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 147

102000212

Object Oriented
Programming

Unit-4
Object and
Classes
Prof. Jinal Bhagat
Outline Weightage: 15%
 Basics of Object and Class in C++
 Private and Public Members
 Static data and Function Members
 Constructors and their types
 Destructors I like C++ so much
 Operator Overloading

I like
Type Conversion
Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 2


Object and Class in C++
What is an Object?

Pen Board Laptop


I like C++ so much
I like Rupesh sir

Bench Projector Bike

Physical objects…
Unit-4 Objects and Classes A D Patel Institute of Technology 4
What is an Object? (Cont…)

I like C++ so much


I
Result
like Rupesh sirBank Account

Logical objects…

Unit-4 Objects and Classes A D Patel Institute of Technology 5


Attributes and Methods of an Object

Bank Account

Object: Person Object: Car Object: Account


I like C++ so much
Attributes Attributes Attributes
Name I like Rupesh
Company sir AccountNo
Age Color HolderName
Weight Fuel type AccountType
Methods Methods Methods
Eat Start Deposit
Sleep Drive Withdraw
Walk Stop Transfer
Unit-4 Objects and Classes A D Patel Institute of Technology 6
Class

A Class is a blueprint of an object


I like C++ so much
I like Rupesh sir
A Class describes the object

Unit-4 Objects and Classes A D Patel Institute of Technology 7


Class car

I like C++ so much


Class: Car
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 8


Class: Car

Properties (Describe)
Company Methods (Functions)
Model Start
Color Drive
Mfg. Year Park
Price On_break
Fuel Type On_lock
Mileage On_turn
Gear Type
Power Steering
Anti-Lock braking system
Objects of Class Car

Honda City Hyundai i20 Sumo Grand


I like C++ so much
I like Rupesh sir
Mercedes E class Swift Dzire

Unit-4 Objects and Classes A D Patel Institute of Technology 10


Class in C++
 A class is a blueprint or template that describes the object.
 A class specifies the attributes and methods of objects.

Example:
class car
{ I like C++ so much
// data members and member functions
}car1; I like Rupesh sir
 In above example class name is car, and car1 is object of that
class.

Unit-4 Objects and Classes A D Patel Institute of Technology 11


Specifying Class

How to declare / write class ?

I like C++ so much


How to create an object
I like Rupesh sirof class)?
(instance/variable

How to access class members ?

Unit-4 Objects and Classes A D Patel Institute of Technology 12


How to declare / write class ?

Class
class car
{
private: I like C++ so much Car
int price; Attributes
float I like Rupesh sirPrice
mileage; Mileage
public: Methods
void start(); Start
void drive(); Drive
};

Unit-4 Objects and Classes A D Patel Institute of Technology 13


How to create an object ?
Syntax:
className objectVariableName;

Class
class car
{ I like C++ so much Object
private:
int price; I like Rupeshintsirmain()
float {
mileage; car c1;
public: c1.start();
void start(); }
void drive();
};
Unit-4 Objects and Classes A D Patel Institute of Technology 14
Object in C++
 An object is an instance of a class
 An object is a variable of type class

Class Object
class car
{
I like C++ so much
int main()
private:
int price;
I like Rupesh{ sir
car c1;
float
c1.start();
mileage;
c1.drive();
public:
}
void start();
void drive();
};
Unit-4 Objects and Classes A D Patel Institute of Technology 15
Program: class, object
 Write a C++ program to create class Test having data members
mark and spi.
 Create member functions SetData() and DisplayData()to
demonstrate class and objects.
I like C++ so much
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 16


#include <iostream>
using namespace std;
Program: class, object
class Test
{ int main()
private: {
int mark; Test o1;
float spi; o1.SetData();
public:
void SetData() o1.DisplayData();
{ return 0;
mark = 270; }
 Calling
Executes
Starting statements
Createsmember
point
an object ao1 and
offunction.
Program
of
spi = 6.5; return
type to
Control calling
jumps
Test tofunction
definition
}
of SetData()
DisplayData()
void DisplayData()
{
cout << "Mark= "<<mark<<endl;
cout << "spi= "<<spi;
}
} ;
class Test int main()
{ {
private: Test o1,o2;
int mark; o1.SetData();
float spi;
public: o1.DisplayData();
void SetData() o2.SetData();
{
cin>>mark; o2.DisplayData();
cin>>spi; return 0;
} } mark = 50
void DisplayData() o1
{
cout << "Mark= spi = 7.5
"<<mark;
cout << "spi= "<<spi; mark = 70
o2
}
spi =
} ; 6.83
Program: class, object
 Write a C++ program to create class Car having data members
Company and Top_Speed.
 Create member functions SetData() and DisplayData()
and create two objects of class Car.
I like C++ so much
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 19


class Car
{ Program: class, object
private: int main()
char company[20]; {
int top_speed; Car o1;
public: o1.SetData();
void SetData(){
cout<<"Enter Company:"; o1.DisplayData();
cin>>company; return 0;
cout<<"Enter top speed:";
}
cin>>top_speed;
}
void DisplayData()
{
cout << "\nCompany:"<<company;
cout << "\tTop Speed:"<<top_speed;
}
} ;
Program: class, object
 Write a C++ program to create class Employee having data
members Emp_Name, Salary, Age.
 Create member functions SetData() and DisplayData().
 Create two objects of class Employee
I like C++ so much
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 21


lass Employee
Program: class, object
private:
char name[10];
int salary, age; int main()
{
public: Employee o1;
void SetData() o1.SetData();
{
cin>>name>>salary>>age; o1.DisplayData();
} return 0;
void DisplayData() }
{
cout << “Name= "<<name<<endl;
cout << “salary= "<<salary<<endl;
cout << “age= "<<age;
}
;
Private and Public Members

Private Public
Private Members
 Private members of the class can be
By default all the members of class
Class accessed within the class and from
are private
member functions of the class.
class car  A private member variable or
{ function cannot be accessed, or even
Private:
long int price; I like C++ so much
viewed from outside the class.
float mileage;
void setdata() I like Rupesh sir
This feature in OOP is known as Data
{
price = hiding / Encapsulation
700000; mileage
= 18.5;
}
};
Unit-4 Objects and Classes A D Patel Institute of Technology 24
Private Members
 Private members of the class can be accessed within the class and
from member functions of the class.
 They cannot be accessed outside the class or from other
programs, not even from inherited class.
I like C++ so much
 If you try to access private data from outside of the class, compiler
throws error.
I like Rupesh sir
 This feature in OOP is known as Data hiding / Encapsulation.
 If any other access modifier is not specified then member default
acts as Private member.

Unit-4 Objects and Classes A D Patel Institute of Technology 25


Public Members
Class
class car The public
Public members
members of a class from
are accessible can
{ beanywhere
accessed outside the class but
using
private: the objectwithin
nameaand dot operator '.'
program.
long int price;

I like C++ so much


float mileage;
public:
Object
I like Rupeshintsirmain()
char model[10];
void setdata()
{ {
price = car c1;
700000; c1.model =
"petrol";
mileage=18.53; c1.setdata();
} }
};Objects and Classes
Unit-4 A D Patel Institute of Technology 26
Public Members
 The public keyword makes data and functions public.
 Public members of the class are accessible by any program from
anywhere.
 Class members that allow manipulating or accessing the class data
are made public. I like C++ so much
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 27


Data Hiding in Classes
CLASS
No entry to Private Area
Private area Data
X
I like C++ so much
Functions

Entry allowed to I like Rupesh sir


Public Area

Public area Data


Functions

Unit-4 Objects and Classes A D Patel Institute of Technology 28


Example Class in C++
class Test By Default the members of a
{ private is a Keyword
class are private.
private:
int data1; Private data and functions
float data2; can be written here
public:
I like C++ so much
void function1()
{
public is a
Keyword
I like Rupesh sir
}
data1 = 2;

float Public data and functions


function2() can be written here
{
data2 = 3.5;
return data2;
}
};
Unit-4 Objects and Classes A D Patel Institute of Technology 29
Function Definition Outside Class
Function definition outside the class
Syntax:
Return-type class-name :: function-name(arguments)
{
Function body;
 The membership label class-name::
}
I like C++ so much
tells the compiler that the function
belongs to class

Example: I like Rupesh sir


void Test :: SetData(int i,int j)
{
mark = i;
spi = j;
}

Unit-4 Objects and Classes A D Patel Institute of Technology 31


Function
class car
Definition outside class
{
private:
float mileage;
public:
float
updatemileage();
I like C++ so much
void car :: setdata()
void setdata()
;
{
{
mileage = 18.5;
I like Rupesh sir
mileage =
}
18.5;
}
}; int main()
float car :: {
updatemileage() car c1;
{ c1.setdata();
return mileage+2; c1.updatemileage();
} }

Unit-4 Objects and Classes A D Patel Institute of Technology 32


class Test
{
Program: function outside
private: int main() class
int mark; {
float spi; Test o1;
public:
void SetData(int,float); o1.SetData(70,6.5);
void DisplayData(); o1.DisplayData();
}; return 0;
void Test :: SetData(int i,float
} j)
{
mark = i;  The membership label Test::
spi = j; tells the compiler that the
} SetData() and
void Test :: DisplayData() DisplayData() belongs to
{ Test class
cout << "Mark= "<<mark;
cout << "\nspi= "<<spi;
Member Functions with
Arguments
Program: Function with argument
 Define class Time with members hour, minute and second.
Also define function to setTime() to initialize the members,
print() to display time. Demonstrate class Time for two
objects.

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 35


Program: Function with argument
#include<iostream>
using namespace std;
class Time
{
private :
I like C++ so much
int hour, minute, second;
public :
I like Rupesh sir
void setTime(int h, int m, int s);
void print();
};

Unit-4 Objects and Classes A D Patel Institute of Technology 36


Program: Function with argument
void Time::setTime(int h, int m, int s)
{
hour=h;
minute=m;
second=s;
} I like C++ so much
void Time::print()
{ I like Rupesh sir
cout<<"hours=\n"<<hour;
cout<<"minutes=\n"<<minute;
cout<<"seconds=\n"<<second;
}

Unit-4 Objects and Classes A D Patel Institute of Technology 37


Program: Function with argument
int main()
{
int h,m,s;
Time t1;
cout<<"Enter hours="; cin>>h;
I like C++ so much
cout<<"Enter minutes="; cin>>m;
cout<<"Enter seconds="; cin>>s;
I like Rupesh sir
t1.setTime(h,m,s);
t1.print();
return 0;
}

Unit-4 Objects and Classes A D Patel Institute of Technology 38


Program: Function with argument
 Define class Rectangle with members width and height.
Also define function to set_values() to initialize the
members, area() to calculate area. Demonstrate class
Rectangle for two objects.

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 39


class Rectangle
{ Program: Function
int width, height;
public:
with argument
void set_values (int,int);
int area(){
return width*height;
}
};
void Rectangle::set_values (int x, int y){
width = x; height = y;
}
int main(){
Rectangle rect;
rect.set_values(3,4);
cout << "area: " << rect.area();
return 0;
}
Program: Function with argument
 Define class Employee with members age and salary.
1. Also define function to setdata() to initialize the members.
2. Define function displaydata() to display data.
3. Demonstrate class Employee for two objects.
int main(){ I like C++ so much
I like Rupesh sir
Employee yash,raj;

yash.setData(23,1500);
yash.displaydata();

raj.setData(27,1800);
raj. displaydata();
return 0;
Unit-4 }
Objects and Classes A D Patel Institute of Technology 41
Program: Function with
class Employee{ argument
private :
int age; int salary;
public :
void setData(int , int);
void displaydata();
}; I like C++ so much
void Employee::setData(int x, int y){
age=x;
salary=y;
I like Rupesh sir
}
void Employee::displaydata(){
cout<<"age="<<age<<endl;
cout<<"salary="<<salary<<endl;
}
Unit-4 Objects and Classes A D Patel Institute of Technology 42
Passing Objects as Function
Arguments
Function with argument and returns value
#include <iostream> Value of
using namespace std; int main() Argument int fun1(int
{ f)
..... {
int add(int, int); b = .....
fun1(a); .....
int main(){
int a=5,b=6,ans; I like C++ so much
}
..... Function
Result }
return e;

ans = add(a,b);
I like Rupesh sir
cout<<"Addition is="<<ans;
return 0;
}
int add(int x,int y)
{
return x+y;
}
Unit-4 Objects and Classes A D Patel Institute of Technology 44
Object as Function arguments
time
int time
int
t1
a t2
b

Function
I like C++ so much
void add(intI x,
like Rupesh
int y) void sir
addtime(time x, time y)
{ {
statements… statements…
} }
int main() int main()
{ {
int a=5,b=6; time t1,t2,t3;
add(a,b); t3.addtime(t1,t2);
} }
Unit-4 Objects and Classes A D Patel Institute of Technology 45
Object as Function arguments

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 46


class Time
{
Program: passing object
int hour, minute, second; as argument
public :
void getTime(){
cout<<"\nEnter hours:";cin>>hour;
cout<<"Enter Minutes:";cin>>minute;
cout<<"Enter Seconds:";cin>>second;
}
void printTime(){
cout<<"\nhour:"<<hour;
cout<<"\tminute:"<<minute;
cout<<"\tsecond:"<<second;
}
void addTime(Time x, Time y){
hour = x.hour + y.hour;
minute = x.minute + y.minute;
second = x.second + y.second;
}
};
int main() Program: passing object
{ as argument
Time t1,t2,t3;

t1.getTime();
t1.printTime();

t2.getTime();
t2.printTime();

t3.addTime(t1,t2);
cout<<"\nafter adding two objects";
t3.printTime();

return 0;
}
t3.addTime(t1,t2);

Here, hour, minute and second represents data of object t3


because this function is called using code t3.addTime(t1,t2)

Function Declaration
void addTime(Time x, Time y)
{
hour = x.hour + y.hour;
minute = x.minute + y.minute;
second = x.second + y.second;
}
Program: Passing object as argument
 Define class Complex with members real and imaginary .
Also define function to setdata() to initialize the members,
print() to display values and addnumber() that adds two
complex objects.

I like C++ so much


 Demonstrate concept of passing object as argument.

I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 50


Program: Passing object as int main()
{
argument Complex c1,c2,c3;
class Complex c1.readData();
{ c2.readData();
private: c3.addComplexNumbers(c1,
int real,imag; c2);
public: c3.displaySum();
void readData() }
{
cout<<"Enter real and imaginary number:";
cin>>real>> imag;
}
void addComplexNumbers(Complex comp1, Complex comp2)
{
real=comp1.real+comp2.real;
imag=comp1.imag+comp2.imag;
}
void displaySum()
{
cout << "Sum = " << real<< "+" << imag << "i";
}
};
Passing and Returning Objects
Passing and returning object
time
int time
int
t1
a t2
b

Function result
I like C++ so much
int add(int I
x,like
int y)Rupesh sir
time addtime(time x, time y)
{ {
return return //object of class time
} }
int main() int main()
{ {
int a=5,b=6,result; time t1,t2,t3,result;
result = add(a,b); result = t3.addtime(t1,t2);
} }
Unit-4 Objects and Classes A D Patel Institute of Technology 53
Passing and returning object

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 54


Program: Passing and Returning an Object
 Define class Time with members hour, minute and second.
Also define function to getTime() to initialize the members,
printTime() to display time and addTime() to add two
time objects. Demonstrate class Time.

I like C++ so much


1. Passing object as argument
2. Returning object
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 55


class Time{ Program: Returning
int hour, minute, second;
public : object
void getTime(){
cout<<"\nEnter hours:";cin>>hour;
cout<<"Enter Minutes:";cin>>minute;
}
void printTime(){
cout<<"\nhour:"<<hour;
cout<<"\tminute:"<<minute;
}
Time addTime(Time t1, Time t2){
Time t4;
t4.hour = t1.hour + t2.hour;
t4.minute = t1.minute + t2.minute;
return t4;
}
};
Program: Returning
int main() object
{
Time t1,t2,t3,ans;

t1.getTime();
t1.printTime();

t2.getTime();
t2.printTime();

ans=t3.addTime(t1,t2);
cout<<"\nafter adding two objects";
ans.printTime();

return 0;
}
Program: Returning object
 C++ program to add two complex numbers by Pass and Return
Object from the Function.

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 58


class Complex
{
Program: Returning object
private:
int real,imag;
public:
void readData()
{
cout<<"Enter real and imaginary number:";
cin>>real>> imag;
}
Complex addComplexNumbers(Complex comp1, Complex
comp2)
{
Complex temp;
temp.real=comp1.real+comp2.real;
temp.imag=comp1.imag+comp2.imag;
return temp;
}
void displaySum()
{
cout << "Sum = " << real<< "+" << imag << "i";
}
};
Program: Returning object
int main()
{
Complex c1,c2,c3,ans;
c1.readData();
c2.readData();
ans = c3.addComplexNumbers(c1, c2);
ans.displaySum();
}
Nesting Member Functions
Nesting Member functions
 A member function of a class can be called by an object of that
class using dot operator.
 A member function can be also called by another member
function of same class.
I like C++ so much
 This is known as nesting of member functions.

I like Rupesh sir


void set_values (int x, int y)
{
width = x;
height = y;

printdata();
}

Unit-4 Objects and Classes A D Patel Institute of Technology 62


Program: Nesting member function
 Define class Rectangle with member width,height. Also
define function to setvalue(), displayvalue().
Demonstrate nested member functions.

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 63


Program: Nesting member function
class rectangle{
int w,h;
public:
void setvalue(int ww,int
hh)
{
w=ww;
I like C++ so much int main(){
rectangle r1;
h=hh;
I like Rupesh sir
displayvalue(); r1.setvalue(5,6);
}
void displayvalue() r1.displayvalue();
{ return 0;
cout<<"width="<<w; }
cout<<"\t height="<<h;
}
};Objects and Classes
Unit-4 A D Patel Institute of Technology 64
Memory allocation of objects
 The member functions are created and placed in the memory
space only once at the time they are defined as part of a class
specification.
 No separate space is allocated for member functions when the


I like
objects are created.
C++ so much
Only space for member variable is allocated separately for each
I like
object because, Rupesh
the member sirwill hold different data
variables
values for different objects.

Unit-4 Objects and Classes A D Patel Institute of Technology 65


Memory allocation of objects(Cont…)
Common for all objects
Member function 1

Member function 2

I like C++ so much


Memory created when, Functions defined

Object 1 Object 2 Object 3


I like
Member variable 1 Rupesh
Member variable 1sir Member variable 1

Member variable 2 Member variable 2 Member variable 2

Memory created when Object created

Unit-4 Objects and Classes A D Patel Institute of Technology 66


class Account Object A1
{ Account No 101
int Account_no,Balance;
char Account_type[10]; Account Type Current
public: Balance 3400
void setdata(int an,char at[],int
bal) Object A2
{
Account_no = an; Account No 102
Account_type = at; Account Type Saving
Balance = bal; Balance 150
}
};
Object A3
int main(){
Account A1,A2,A3; Account No 103
A1.setdata(101,“Current“,3400); Account Type Current
A2.setdata(102,“Saving“,150); Balance 7900
A3.setdata(103,“Current“,7900);
return 0;
}
Static Data members / variables
Static Data members
A static data member is useful,
when all objects of the same class must share a common
information.

Just write static keyword prefix to regular variable

I like C++ so much


It is initialized to zero when first object of class created

I like Rupesh sir


Only one copy is created for each object

Its life time is entire program

Unit-4 Objects and Classes A D Patel Institute of Technology 69


class demo Static Data members
{
static int count;
public:
void getcount()
{ count
cout<<"count="<<+
+count; 3
1
0
2
}
};

int demo::count; d1 d2 d3
int main()
{
demo d1,d2,d3; Static members are declared inside
d1.getcount(); the class and defined outside the
d2.getcount(); class.
d3.getcount();
return 0;
}
class demo
Regular Data members
{
int count;

public:
void getcount()
{
count = 0;
cout<<"count="<< +
d1 d2 d3
+count;
}
}; 10 01 10
int main()
{ count count count
demo d1,d2,d3;
d1.getcount();
d2.getcount();
d3.getcount();
return 0;
}
Static Data Members
 Data members of the class which are shared by all objects are known
as static data members.
 Only one copy of a static variable is maintained by the class and it is
common for all objects.

I like C++ so much


 Static members are declared inside the class and defined outside
the class.
I like Rupesh sir
 It is initialized to zero when the first object of its class is created.
 you cannot initialize a static member variable inside the class
declaration.
 It is visible only within the class but its lifetime is the entire program.
 Static members are generally used to maintain values common to
the entire class.
Unit-4 Objects and Classes A D Patel Institute of Technology 72
Program : Static data member
class item
{
int number;
static int count;// static variable
declaration
public:
I like C++ so much
void getdata(int a){
I like Rupesh sir
number = a;
count++;
}
void getcount(){
cout<<"\nvalue of count: "<<count;
}
};
int item :: count; // static variable
definition
Unit-4 Objects and Classes A D Patel Institute of Technology 73
Program : Static data member
int main()
{ Object a Object b Object c
item a,b,c; number number number
100 200 300
a.getdata(100);

I like C++ so muchcount


a.getcount();

I like Rupesh sir 1230


b.getdata(200);
a.getcount();

c.getdata(300);
a.getcount(); Output:
value of count: 1
return 0; value of count: 2
} value of count: 3

Unit-4 Objects and Classes A D Patel Institute of Technology 74


Program : Static data member
lass shared { int main() {
static int a; shared x, y;
int b; x.set(1, 1);
ublic: x.show();
void set(int i, int j) {a=i; b=j;} y.set(2, 2);
void show(); y.show();
;
nt shared::a;
I like C++ so much x.show();
return 0;

I like Rupesh sir


oid shared::show() }

cout << "This is static a: " << a;


cout << "\nThis is non-static b: " << b; cout << "\n";

 static
variable
variable
a redeclared
a declared
outside
inside
theclass
class
but,
usingstorage
scope resolution
is not allocated
operator.
 Storage for the variable will be allocated
Unit-4 Objects and Classes A D Patel Institute of Technology 75
class A
{
Program : Static data member
int x;
public:
A()
{
cout << "A's constructor called " << endl;
}
};

class B
{
static A a;
public:
B()
{
cout << "B's constructor called " << endl;
}
};

A B::a; // definition of a
Output:
int main() A's constructor called
{
B's constructor called
B b1, b2, b3;
return 0; B's constructor called
} B's constructor called
Static Member Functions
Static Member Functions
 Static member functions can access only static members of the
class.
 Static member functions can be invoked using class name, not
object.
I like C++ so much
 There cannot be static and non-static version of the same
function.
I like Rupesh sir
 They cannot be virtual.
 They cannot be declared as constant or volatile.
 A static member function does not have this pointer.

Unit-4 Objects and Classes A D Patel Institute of Technology 78


Program: Static Member function
class item
{
int number;
static int count;// static variable
declaration
public:
I like C++ so much
void getdata(int a){
I like Rupesh sir
number = a;
count++;
}
static void getcount(){
cout<<”value of count: “<<count;
}
};
int item :: count; // static variable
definition
Unit-4 Objects and Classes A D Patel Institute of Technology 79
Program: Static Member function
int main()
{
item a,b,c;

a.getdata(100);
I like C++ so much
item::getcount();

I like Rupesh sir


b.getdata(200);
item::getcount();

c.getdata(300); Output:
item::getcount(); value of count: 1
return 0; value of count: 2
} value of count: 3

Unit-4 Objects and Classes A D Patel Institute of Technology 80


Friend Function
Friend Function
 In C++ a Friend Function that is a "friend" of a given class is
allowed access to private and protected data in that class.
 A friend function is a function which is declared using friend
keyword.
I like C++ so much
Class Class
class A I like Rupesh sir class B
{ {
private: Friend private:
int numA; Function int numB;
public: void add() public:
void setA(); { void setB();
friend void add(); Access friend void add();
}; numA, numB };
}
Unit-4 Objects and Classes A D Patel Institute of Technology 82
Friend Function
 Friend function can be declared either in public or private part of
the class.
 It is not a member of the class so it cannot be called using the
object.
I like C++ so much
 Usually, it has the objects as arguments.
Syntax:
class ABC I like Rupesh sir
{
public:
……………………………………………
friend void xyz(argument/s); //declaration
……………………………………………
};
Unit-4 Objects and Classes A D Patel Institute of Technology 83
Program: Friend Function
class numbers {
int num1, num2;
public:
void setdata(int a, int b);
friend int add(numbers N);
}; I like C++ so much
void numbers :: setdata(int a, int b){
num1=a;
num2=b;
I like Rupesh sirint main()
{
}
numbers N1;
int add(numbers N){
N1.setdata(10,20);
return (N.num1+N.num2);
cout<<”Sum =
}
”<<add(N1);
return 0;
Unit-4 Objects and Classes
}
A D Patel Institute of Technology 84
class Box { Program: Friend
double width;
public: Function
friend void printWidth( Box );
void setWidth( double wid );
};
void Box::setWidth( double wid ) {
width = wid;
}
void printWidth(Box b) {
cout << "Width of box : " << b.width;
}
int main( ) {
Box box;
box.setWidth(10.0);
printWidth( box );
return 0;
}
class base
{ Program: Friend
int val1,val2;
public: Function
void get(){
cout<<"Enter two values:";
cin>>val1>>val2;
}
friend float mean(base ob);
};
float mean(base ob){
return float(ob.val1+ob.val2)/2;
}
int main(){
base obj;
obj.get();
cout<<"\n Mean value is : "<<mean(obj);
}
Member function, friend to another class
class X {  Member functions of one class can be
……………………………………… made friend function of another
int f();
class.
};
class Y{  The function f is a member of
……………………………………… I like C++class
so much
X and a friend of class Y.
friend int X ::
f(); I like Rupesh sir
};

Unit-4 Objects and Classes A D Patel Institute of Technology 87


Friend function to another class
Class Class
class A class B
{ {
private: Friend private:
int numA;
public: I like void
C++add()
so much
Function int numB;
public:

I like Rupesh sir };


void setA(); { void setB();
friend void add(); Access friend void add();
}; numA, numB
}

Unit-4 Objects and Classes A D Patel Institute of Technology 88


Program: Friend function to another class
 Write a program to find out sum of two private data members
numA and numB of two classes ABC and XYZ using a common
friend function. Assume that the prototype for both the classes
will be int add(ABC, XYZ);

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 89


class XYZ; //forward declaration Program: Friend to another class
class ABC { class XYZ {
private: private:
int numA; int numB;
public: public:
void setdata(){ void setdata(){
numA=10; numB=25;
} }
friend int add(ABC, XYZ); friend int add(ABC ,
}; XYZ);
};
int add(ABC objA, XYZ objB){
return (objA.numA + objB.numB);
}
int main(){
ABC objA; XYZ objB;
objA.setdata(); objB.setdata();
cout<<"Sum: "<< add(objA, objB);
}
class Square; // forward declarationProgram: Friend
class Rectangle to another class
{
int width=5, height=6;
public:
friend void display(Rectangle , Square );
};
class Square
{
int side=9;
public:
friend void display(Rectangle , Square );
};
void display(Rectangle r, Square s)
{
cout<<"Rectangle:"<< r.width * r.height;
cout<<"Square:"<< s.side * s.side;
}
Program: Friend
int main () { to another class
Rectangle rec;
Square sq;
display(rec,sq);
return 0;
}
Use of friend function
 It is possible to grant a nonmember function access to the private
members of a class by using a friend function.
 It can be used to overload binary operators.

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 93


Constructors
What is constructor ?
A constructor is a block of code which is,
similar to member function
has same name as class name
I like C++ so much
called automatically when object of class created
I like Rupesh sir
A constructor is used to initialize the objects of class as soon as the
object is created.

Unit-4 Objects and Classes A D Patel Institute of Technology 95


Constructor
class car
class car
{
Same {
private:
private:
float mileage; name as
float mileage;
public: class name public:
void setdata()
{
I like C++ so
Similar
member
to much
car()
{

I like Rupesh
function sir
cin>>mileage;
} cin>>mileage;
}; }
};
int main() int main()
Called
{ {
automatically
car c1,c2;
c1; car c1,c2;
c1;
on creation
c1.setdata()
of object
;
c2.setdata()
} ; }
Unit-4 Objects and Classes A D Patel Institute of Technology 96
Properties of Constructor class car
 Constructor should be declared in public {
private:
section because private constructor cannot float
be invoked outside the class so they are mileage;
public:
useless.
car()
I like C++ so much
 Constructors do not have return types and
they cannot return values, not even void.
{

I like Rupesh sir cin>>mileage;


}
};
 Constructors cannot be inherited, even though a derived class can
call the base class constructor.
 Constructors cannot be virtual.
 They make implicit calls to the operators new and delete when
memory allocation is required.
Unit-4 Objects and Classes A D Patel Institute of Technology 97
Constructor (Cont…)
class Rectangle
{
int width,height;
public:
Rectangle(){
width=5;
height=6;
I like C++ so much
}
I like Rupesh sir
cout<<”Constructor Called”;

};
int main()
{
Rectangle r1;
return 0;
}
Unit-4 Objects and Classes A D Patel Institute of Technology 98
Types of Constructors
Types of Constructors
1) Default constructor
2) Parameterized constructor
3) Copy constructor

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 100


1) Default Constructor
 Default constructor is the one which invokes by default when
object of the class is created.
 It is generally used to initialize the default value of the data
members.
I like C++ so much
 It is also called no argument constructor.

class demo{ I like int


Rupesh
main() sir
int m,n; { Object d1
public: demo d1;
demo() m n
}
{ 10 10
m=n=10;
}
};
Unit-4 Objects and Classes A D Patel Institute of Technology 101
Program Constructor
class Area int main(){
{ Area A1;
private: A1.Calculate();
int length, breadth; Area A2;
public: A2.Calculate();
Area(){
length=5; I like C++ so much
}
return 0;

breadth=2;
} I like Rupesh sir
void Calculate(){
cout<<"\narea="<<length * breadth;
A1 A2
}
length breadth length breadth
};
5 2 5 2
Unit-4 Objects and Classes A D Patel Institute of Technology 102
2) Parameterized Constructor
 Constructors that can take arguments are called parameterized
constructors.
 Sometimes it is necessary to initialize the various data elements of
different objects with different values when they are created.
I like C++ so much
 We can achieve this objective by passing arguments to the
constructor function when the objects are created.
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 103


Parameterized Constructor
 Constructors that can take arguments are called parameterized
constructors.
class demo
{
int m,n;
public: I like C++ so much
demo(int x,int y){ //Parameterized Constructor
m=x;
n=y; I like Rupesh sir
cout<<“Constructor Called“;
}
};
int main() d1
{ m n
demo d1(5,6);
} 5 6

Unit-4 Objects and Classes A D Patel Institute of Technology 104


Program Parameterized Constructor
 Create a class Distance having data members feet and inch.
Create parameterized constructor to initialize members feet and
inch.

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 105


3) Copy Constructor
 A copy constructor is used to declare and initialize an object from
another object using an object as argument.
 For example:
demo(demo &d); //declaration
I like C++//copy
demo d2(d1); soobject
much
OR demo d2=d1; //copy object
 Constructor Iwhich
likeaccepts
Rupesh sir
a reference to its own class as a
parameter is called copy constructor.

Unit-4 Objects and Classes A D Patel Institute of Technology 106


3) Copy Constructor
 A copy constructor is used to initialize an object
from another object
using an object as argument.

 A Parameterized constructor which accepts a reference to its own


I like C++ so much
class as a parameter is called copy constructor.

I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 107


Copy Constructor
class demo int main()
{ {
int m, n; demo obj1(5,6);
public: demo obj2(obj1);
demo(int x,int y){ demo obj2 = obj1;

I like C++ so much


m=x;
n=y; }
obj1
obj1 or x
cout<<"Parameterized
Constructor";
}
I like Rupesh sir m n

demo(demo &x){ 5 6
m = x.m;
n = x.n; obj2
cout<<"Copy Constructor"; m n
}
5 6
};
Unit-4 Objects and Classes A D Patel Institute of Technology 108
Program: Types of Constructor
 Create a class Rectangle having data members length and
width. Demonstrate default, parameterized and copy
constructor to initialize members.

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 109


Program: Types of Constructor
class rectangle{
int length, width; This is constructor
public: overloading
rectangle(){ // Default constructor
length=0;
width=0;
}
rectangle(int x, int y){// Parameterized

constructor
length = x;
width = y;
}
rectangle(rectangle &_r){ // Copy constructor
length = _r.length;
width = _r.width;
}
Program: Types of Constructor (Cont…)

int main()
{
rectangle r1; // Invokes default
constructor
rectangle r2(10,20); // Invokes
parameterized
constructor
rectangle r3(r2); // Invokes copy
constructor
}
Destructor
Destructor class car
{
float mileage;
• Destructor is used to destroy the objects public:
that have been created by a constructor. car(){
cin>>mileage;
• The syntax for destructor is same as that }
for the constructor,
~car(){
– the class name is used for the name of cout<<"
destructor, destructor";
}
– with a tilde (~) sign as prefix to it.
};

Destructor
 never takes any argument nor it returns any value nor it has return
type.
 is invoked automatically by the complier upon exit from the
program.
 should be declared in the public section.
Program: Destructor
class rectangle int main()
{ {
int length, width; rectangle x;
public: // default
rectangle(){ //Constructor constructor is
length=0;
width=0; I like C++ so much
called
}
cout<<”Constructor Called”;
} I like Rupesh sir
~rectangle() //Destructor
{
cout<<”Destructor Called”;
}
// other functions for reading, writing and
processing can be written here
};
Unit-4 Objects and Classes A D Patel Institute of Technology 114
Program: Destructor
class Marks{ int main( )
public: {
int maths; Marks
int science; m1;
//constructor Marks
Marks() { I like C++ so much
m2;
cout << "Inside Constructor"<<endl;
return

}
I like Rupesh sir
cout << "C++ Object created"<<endl;
0;
}
//Destructor
~Marks() {
cout << "Inside Destructor"<<endl;
cout << "C++ Object destructed"<<endl;
}
};
Unit-4 Objects and Classes A D Patel Institute of Technology 115
Operator Overloading
Operator Overloading
int a=5, b=10,c; Operator + performs
c = a + b; addition of
integer operands a, b

I like C++ so much


time t1,t2,t3;
t3 = t1 + t2;
Operator + performs
addition of
I like Rupesh sirobjects of type time
string str1=“Hello” Operator + concatenates
string str2=“Good two strings str1,str2
Day”;
string str3;
str3 = str1 + str2;
Unit-4 Objects and Classes A D Patel Institute of Technology 117
Operator overloading
 Function overloading allow you to use same function name for
different definition.
 Operator overloading extends the overloading concept to
operators, letting you assign multiple meanings to C++ operators

I like C++ so much


 Operator overloading giving the normal C++ operators such as +, *
and == additional meanings when they are applied with user
defined dataItypes.
like Rupesh sir Operator Purpose

* As pointer, As multiplication
Some of C++ Operators
are already overloaded << As insertion, As bitwise shift left

& As reference, As bitwise AND

Unit-4 Objects and Classes A D Patel Institute of Technology 118


Operator Overloading
int a=5, b=10,c;
c = a + b;
Operator + performs addition of integer
operands a, b
class time
{
int hour, minute; I like C++ so much
};
I like Rupesh sir
Operator + performs addition of objects of
type time t1,t2
time t1,t2,t3;
t3 = t1 + t2;
string str1=“Hello”,str2=“Good
Day”;
Operator + concatenates two strings
str1 + str2;
str1,str2
Unit-4 Objects and Classes A D Patel Institute of Technology 119
Operator Overloading
 Specifying more than one definition for an operator in the same
scope, is called operator overloading.
 You can overload operators by creating “operator functions”.
Syntax:
I like C++ so much
return-type operator op-symbol(argument-list)
{

}
// statements
I like Rupesh sir
Keyword substitute the operator

Example:
void operator + (arguments);
int operator - (arguments);
class-name operator / (arguments);
float operator * (arguments);
Unit-4 Objects and Classes A D Patel Institute of Technology 120
Overloading Binary operator + int main()
class complex{ {
int real,imag; complex
public: c1(4,6),c2(7,9);
complex(){ complex c3;
real=0; imag=0; c3 = c1 + c2;
} c1.disp();
complex(int x,int y){ c2.disp();
real=x; imag=y; c3.disp();
} return 0;
void disp(){ }
cout<<"\nreal value="<<real<<endl;
cout<<"imag value="<<imag<<endl;
}
complex operator + (complex);
};
complex complex::operator + (complex c){
complex tmp;
tmp.real = real + c.real; Similar to function call
tmp.imag = imag + c.imag; c3=c1.operator +
return tmp; (c2);
}
Binary Operator Arguments
result = obj1.operator symbol (obj2);//function
notation
result = obj1 symbol obj2; //operator
notation
complex operator + (complex x)
{
complex tmp;
tmp.real = real + x.real;
tmp.imag = imag + x.imag;
return tmp;
}

result = obj1.display();
void display()
{
cout<<"Real="<<real;
cout<<"Imaginary="<<imag;
}
Operator Overloading
 Operator overloading is compile time polymorphism.
 You can overload most of the built-in operators available in C++.
+ - * / % ^
& | ~ ! , =
<
<< I like C++ so much
>>
> <=
==
>=
!=
++
&&
--
||
+=
|= I like Rupesh sir
-=
*=
/=
<<=
%=
>>=
^=
[]
&=
()
-> ->* new new [] delete delete []

Unit-4 Objects and Classes A D Patel Institute of Technology 123


Operator Overloading using
Friend Function
Invoke Friend Function in operator overloading
result = operator symbol (obj1,obj2);//function
notation
result = obj1 symbol obj2; //operator
notation
friend complex operator +(complex c1,complex c2)
{
complex tmp;
tmp.r=c1.r+c2.r;
tmp.i=c1.i+c2.i;
return tmp;
}
int main()
{
complex c1(4,7),c2(5,8);
complex c3;
c3 = c1 + c2;
c3 = operator +(c1,c2);
}
Overloading Binary operator ==
class complex{ int main()
int r,i; {
public: complex c1(5,3),c2(5,3);
complex(){ if(c1==c2)
r=i=0;} cout<<"objects are
complex(int x,int y){equal";
r=x; else
i=y;} cout<<"objects are not
equal";
void display(){
return 0;
cout<<"\nreal="<<r<<endl;
}
cout<<"imag="<<i<<endl;}
int operator==(complex);
};
int complex::operator ==(complex
c){
if(r==c.r && i==c.i)
return 1;
else
Overloading Unary Operator
Overloading Unary operator − int main()
class space { {
int x,y,z; space
public: s1(5,4,3);
space(){ s1.display();
x=y=z=0;} -s1;
space(int a, int b,int c){ s1.display();
x=a; y=b; z=c; } return 0;
void display(){ }
cout<<"\nx="<<x<<",y="<<y<<",z="<<z;
}
void operator-();
};
void space::operator-()
{
x=-x;
y=-y;
z=-z;
Overloading Unary operator −− int main()
class space { {
int x,y,z; space
public: s1(5,4,3);
space(){ s1.display();
x=y=z=0;} --s1;
space(int a, int b,int c){ s1.display();
x=a; y=b; z=c; } return 0;
void display(){ }
cout<<"\nx="<<x<<",y="<<y<<",z="<<z;
}
void operator--();
};
void space::operator--()
{
x--;
y--;
z--;
Overloading Prefix and Postfix operator
class demo
{ int main()
int m; {
public: demo d1(5);
demo(){ m = 0;} ++d1;
demo(int x) d1++;
{ }

}
m = x;
I like C++ so much
I like Rupesh sir
void operator ++()
{
++m;
cout<<"Pre Increment="<<m;
}
void operator ++(int)
{
m++;
cout<<"Post Increment="<<m;
}
};
Unit-4 Objects and Classes A D Patel Institute of Technology 130
Invoking Operator Function
 Binary operator
operand1 symbol operand2
 Unary operator
operand symbol
symbol operand
I like C++ so much
I like Rupesh
 Binary operator using friend function
operator symbol (operand1,operand2)
sir
 Unary operator using friend function
operator symbol (operand)

Unit-4 Objects and Classes A D Patel Institute of Technology 131


Rules for operator overloading
 Only existing operator can be overloaded.
 The overloaded operator must have at least one operand that is
user defined type.
 We cannot change the basic meaning and syntax of an operator.
I like C++ so much
I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 132


Rules for operator overloading (Cont…)
 When using binary operators overloaded through a member
function, the left hand operand must be an object of the relevant
class.
 We cannot overload following operators.

I like C++ soName


Operator much
I like
. and Rupesh
.* Class siroperator
member access
:: Scope Resolution Operator
sizeof() Size Operator
?: Conditional Operator

Unit-4 Objects and Classes A D Patel Institute of Technology 133


Type Conversion
Type Conversion
F = C * 9/5 + 32 If different data types are mixed in expression, C++
applies automatic type conversion as per certain
rules.
float int

int a;
float b = I like C++ sois converted
a = 10;
 float much to integer automatically
a = b;
10.54;
integer float
I like Rupesh sir
by complier.
 basic to basic type conversion.

(Basic) (Basic)

 An assignment operator causes automatic type conversion.


 The data type to the right side of assignment operator is automatically
converted data type of the variable on the left.

Unit-4 Objects and Classes A D Patel Institute of Technology 135


Type Conversion
Time
t1;
int m;
m = t1;
integer Time  class type will not be converted to
(Basic) (Class) I like C++ so much
basic type OR basic type will not
be converted class type
t1 = I like Rupesh sir
automatically.
m;
Time integer
(Class) (Basic)

Unit-4 Objects and Classes A D Patel Institute of Technology 136


Type Conversion
 C++ provides mechanism to perform automatic type conversion if
all variable are of basic type.
 For user defined data type programmers have to convert it by
using constructor or by using casting operator.
I like C++ so much
 Three type of situation arise in user defined data type conversion.
1. I tolike
Basic type Rupesh
Class type sir
(Using Constructors)
2. Class type to Basic type (Using Casting Operator Function)
3. Class type to Class type (Using Constructors & Casting
Operator Functions)

Unit-4 Objects and Classes A D Patel Institute of Technology 137


(1) Basic to class type conversion
 Basic to class type can be achieved using constructor.
class sample
{ int main()
int a; {
public: int m=10;
sample(){} I like C++ so much sample s;
s = m;
sample(int x){
a=x; I like Rupesh sir s.disp();
return 0;
}
void disp(){ }
cout<<"The value of
a="<<a;
}
};
Unit-4 Objects and Classes A D Patel Institute of Technology 138
(2) Class to basic type conversion
 The Class type to Basic type conversion is done using casting operator
function.
 The casting operator function should satisfy the following conditions.
1. It must be a class member.

I like C++ so much


2. It must not mention a return type.
3. It must not have any arguments.

Syntax:
I like Rupesh sir
operator
destinationtype()
{
....
return
}
Unit-4 Objects and Classes A D Patel Institute of Technology 139
Program: Class to basic type conversion
class sample int main()
{ {
float a; sample S;
public: int y= S;//Class to Basic
sample() conversion
{ cout<<"The value of

}
a=10.23;
I like C++ so much
y="<<y;
return 0;
}
operator int() //Casting operator

{
I like Rupesh sir
function
Explicit type conversion
int x; y = int (S);
x=a;
return x;
Automatic type conversion
} y = S;
};

Unit-4 Objects and Classes A D Patel Institute of Technology 140


Program: Class to basic type conversion
class vector{ int main()
int a[5]; {
public: vector v;
vector(){ int len;
for(int i=0;i<5;i++) len = v;

}
I like C++ so much
a[i] = i*2; cout<<“Length of
V="<<len;

};
operator int(); I like Rupesh sir
return 0;
}
vector:: operator int() {
int sum=0;
for(int i=0;i<5;i++)
sum = sum + a[i];
return sum;}

Unit-4 Objects and Classes A D Patel Institute of Technology 141


(3) Class type to Class type
 It can be achieved by two ways
1. Using constructor
2. Using casting operator function

I like C++ so much


I like Rupesh sir

Unit-4 Objects and Classes A D Patel Institute of Technology 142


class alpha
{
Program: Class type to Class type
int commona;
public: class beta
alpha(){} {
alpha(int x) int commonb;
{ public:
commona = x; beta(){}
} beta(int x)
int getvalue() {
{ commonb = x;
return }
commona; beta(alpha temp) //Constructor

} {
}; commonb =
int main() temp.getvalue();
{ }
alpha operator alpha() //operator
obja(10); function

beta {
objb(obja); return alpha(commonb);
beta objb(20); }
class stock2 ;
class stock1{ Program: Type Conversion
int code , item ;
float price ;
public :
stock1 ( int a , int b , int c ) {
code = a ; item = b ; price = c ;
}
void disp () {
cout << " code " << code << " \n " ;
cout << " items " << item << " \n " ;
cout << " price per item Rs. " << price << " \n
" ;
}
int getcode (){ return code; }
int getitem (){ return item ; }
int getprice (){ return price ; }
operator float () {
return ( item*price ) ;
}
class stock2{
int code ;
Program: Type Conversion
float val ;
public :
stock2 () {
code = 0; val = 0 ;
}
stock2( int x , float y ){
code = x ; val = y ;
}
void disp () {
cout << " code " << code << " \n " ;
cout << " total value Rs. " << val << " \n
" ;
}
stock2( stock1 p ) {
code = p.getcode() ;
val = p.getitem() * p.getprice() ;
}
};
int main() Program: Type Conversion
{
stock1 i1 ( 101 , 10 ,125.0 ) ;
stock2 i2 ;
float tot_val = i1;
i2 = i1 ;
cout << " Stock Details : Stock 1 type " << " \
n " ;
i1.disp ();
cout << " Stock Value " << " - " ;
cout << tot_val << " \n " ;
cout << " Stock Details : Stock 2 type " << " \
n " ;
i2.disp () ;
return 0 ;
}
Thank You

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy