SlideShare a Scribd company logo
MORE ON CLASSES
AND OBJECTS
Chapter 4
Data Members
Types of data member :

   Constant data members.
   Mutable data members.
   Static data members.
Member Functions
Different types of member functions:
 Nested Member functions.

 Overloaded member functions.

 Constant member function.

 Member functions with default arguments.

 Inline member functions.

 Static member functions.
Constant data members
 The data members whose value cannot be
  changed throughout the execution of the
  program.
 They are declared by preceding the qualifier
  const.
Example:
const int x = 10;
Example:
#include<iostream>
void main()
{
const int x = 10;
x++;      // error
cout<< x<<endl;
}
Mutable data members
   If the need arises such that the constant
    member functions has to modify the value of
    the data members then the data member has
    to be declared by prefixing the keyword
    „mutable‟.
Example:
#include<iostream>
class x
{
    int a ;
    mutable int b;
public:
    void xyz() const
{
a++;                   // error
b++;                              // legal
}
};
void main()
{
X x2;
X2.xyz();
}
Constant member function
#include<iostream.h>
                       void main()
class x
                       {
{                      x x1;
                       x1.getdata(56);
int a;
                       Cout<< x1.setdata()<<endl;
public:                }
void getdata(int x)
{
a=x;
}
int setdata() const
{
a++; // error
return a;
}
};
Static data member
   Those members whose members are
    accessed by all the objects of a class.
   It is not own by any object of a class.
   Only one copy of a static data member is
    created for a class which can be accessed by
    all the objects of that class.
Example:
#include<iostream.h>
class x                void main()
                       {
{                      x x1,x2;
static int a;          x1.display();
                       x2.display();
int b;                 x1.getdata(1);
                       x2.getdata(2);
public:                x1.display();
                       x2.display();
void getdata(int x)    }
{
                       Output:
                       0
b=x;                   0
a++;                   2
                       2
}
void display(void)
{
cout<< a<< endl;
}
};
int x :: a;
Static member function
#include<iostream.h>
                             void main()
class sample
                             {
{                            sample s1,s2;
                             Sample :: getdata(1)//invoking static member function
static int a;
                             s1.display();
                             s2.getdata(2);// invoking static member function using object
                             s2.display();
public:                      }
                             Output:
                             1
Static void getdata(int x)
                             2

{

a=x;
}
void display(void)
{
cout<< a<< endl;
}
};
Int sample :: a;
Nested member function
#include<iostream>
                                     void main()
class sample                         {
{                                    sample e;
                                     t =e.get_data (34);
       int x;                        cout<< t << endl;
public:                               }
                                     Output:
       void get_data(int);           Nested member function
       void message(char *);         34
};
int sample :: get_data(int a)
{
x=a;
message(“Nested member function”);
return x;
}
void sample :: message(char *s)
{
cout<< s<< endl;
}
Overloaded member function
                           With single class:
Class A
{                                               Void main()
Public:                                         {
                                                A a1;
void display(void);                             a1.display(void);
void display(int);                              a1.display(20);
                                                }
};                                              Output:
void a :: display(void)                         Hello
{                                               20

cout<< “Hello”<< endl;
}
void a :: display(int d)
{
cout<<d<< endl;
}
Overloaded member function
      Two different classes.
Class A                        Void main()
{                              {
                               A a1;
Public:
                               B b1;
void display(void);            a1.display(void);
};                             b1.display(void);
Class B                        }
                               Output:
{                              Hello
Public:                        World
void display(void);
};


void A :: display(void)
{
cout<< “Hello”<< endl;
}
void B :: display(void)
{
cout<<“World”<< endl;
}
Member functions with default
arguments
#include<iostream>
class addition
{
Public:
     void add(int, int = 2);
};
void addition :: add(int a, int b)
{
return(a+b);
}
Void main()
{
addition a;
a.add(5,6);
a.add(6);
}
Output
11
8
Inline function
Class test
{
                                                  void main()
private :
                                                  {
               int a;                             test t;
               int b;                             int a,b;
public:                                           cout<<“enter the two numbers” <<
                                                  endl;
               void set_data(int , int )
                                                  cin>> a >> b;
              int big()                      //   t.set_data(a,b);
automatic inline function                         cout<<“the largest number is ” <<
               {                                  t.big() << endl;
               if (a > b)                         }
                              return a;
               else
                              return b;
               }
};
inline void test :: set_data(int x, int y)
               {
                              a=x;
                              b=y;
               }
Friend function
  To provide non-member function to access
   private data member of a class, c++ allow the
   non-member to be made friend of that class.
 Syntax:

friend<data_type> <func_name>();
Example
Friend non-member function:

Class sample
{
Int a;
Public:
Friend void change(sample &);
};
Void change(sample &x)
{
x.a= 5;
}
Void main()
{
Sample A;
Change(A);
}
Example
    Friend member function:
                                               Void test :: set_data(sample &a, int b)
Class sample; // forward declaration.          {
Class test                                     a.x= b;
                                               }
{                                              Int sample :: get_data(void)
Public:                                        {
                                               Return x;
Void set_data(sample &, int);                  }
};                                             Void main()
                                               {
Class sample                                   Sample e;
{                                              Test f;
                                               f.set_data(5);
Private:                                       Cout<< e.get_data()<< endl;
Int x;                                         }
Public:
Int get_data(void);
Friend void test :: set_data(sample &, int);
};
Friend class
  A class is made friend of another class. For
   example,
   If a class X is a friend of class Y then all the
   member function of class X can access the
   private data member of class Y.
Declaration:
friend class X;
Example of friend class
# include<iostream>
Class Y;                            void Y :: change_data(X &c, int p, int
                                    q)
Class X                             {
{                                   c.X = p;
                                    c.Y = q;
Int x,y;
                                    }
Public:                             void X :: show_data()
Void show_data();                   {
                                    Cout<< x << y << endl;
friend class Y;                     }
};                                  Int main()
                                    {
Class Y                             X x1;
{                                   Y y1;
                                    Y1.change_data(x1,5,6);
Public:
                                    x1.show_data();
void change_data( X &, int, int);   return 0;
};                                  }
Array of class objects
  Array of class objects is similar to the array of
   structures.
 Syntax:

Class <class_name>
{
// class body
};
<class_name><object_name[size]>;
Example:
Class Employee
{
Char name[20];
Float salary;
Public:
Void getdata();
Void display();
};
Employee e[5];
Passing object to functions
   By value
   By reference
   By pointer
By value
Here only the copy of the object is passed to the
 function definition.
The modification on objects made in the called
 function will not be reflected in the calling
 function.
By reference
Here when the object is passed to the function
 definition, the formal argument shares the
 memory location of the actual arguments.
Hence the modification on objects made in the
 called function will be reflected in the calling
 function.
By pointer
Here pointer to the object is passed. The
 member of the objects passed are accessed
 by the arrow operator(->).
The modification on objects made in the called
 function will be reflected in the calling function.
Example
#include<iostream>                         void set(A *z,int t)
                                           {
class A                                    z->a = t;
{                                          }
int a;                                     int main()
public:                                    {
                                           A a1;
void set(A, int); // call by value         a1.a = 10;
void set(int, A &); // call by reference   cout<<a;
                                           a1.set(a1,5);// by value
void set(A *, int); // call by pointer
                                           cout<<a;
};                                         a1.set(20,a1);// by reference
                                           cout<<a;
void set(A x,int p)
                                           a1.set(&a1,30);// by pointer
{                                          cout<<a;
                                           }
x.a = p;
}                                          Output:
                                           10
void set(int q, A &y)
                                           10
{                                          20
                                           30
y.a = q;
}
Nested class
   Class within a class
   Example:
    class A
    {
    // class body
         class B
         {
         // inner class body
         };
    }

More Related Content

What's hot (20)

PDF
Pragmatic functional refactoring with java 8 (1)
RichardWarburton
 
PPT
Lec 42.43 - virtual.functions
Princess Sam
 
PPTX
Introduction to Julia Language
Diego Marinho de Oliveira
 
PPT
OOP Core Concept
Rays Technologies
 
PPT
Lo Mejor Del Pdc2008 El Futrode C#
Juan Pablo
 
PPT
OOP v3
Sunil OS
 
PDF
FP in Java - Project Lambda and beyond
Mario Fusco
 
PDF
Op ps
Shehzad Rizwan
 
PPT
Constructor
poonamchopra7975
 
PPTX
classes & objects in cpp overview
gourav kottawar
 
PPTX
Constructors & destructors
ForwardBlog Enewzletter
 
PPT
C++: Constructor, Copy Constructor and Assignment operator
Jussi Pohjolainen
 
PPS
Class method
kamal kotecha
 
PPT
Introduction to Functional Programming in JavaScript
tmont
 
PPT
JAVA Variables and Operators
Sunil OS
 
PDF
Java ppt Gandhi Ravi ([email protected])
Gandhi Ravi
 
PPT
Tutconstructordes
Niti Arora
 
PPTX
Introduction to julia
岳華 杜
 
PDF
Java Simple Programs
Upender Upr
 
PPTX
C# Generics
Rohit Vipin Mathews
 
Pragmatic functional refactoring with java 8 (1)
RichardWarburton
 
Lec 42.43 - virtual.functions
Princess Sam
 
Introduction to Julia Language
Diego Marinho de Oliveira
 
OOP Core Concept
Rays Technologies
 
Lo Mejor Del Pdc2008 El Futrode C#
Juan Pablo
 
OOP v3
Sunil OS
 
FP in Java - Project Lambda and beyond
Mario Fusco
 
Constructor
poonamchopra7975
 
classes & objects in cpp overview
gourav kottawar
 
Constructors & destructors
ForwardBlog Enewzletter
 
C++: Constructor, Copy Constructor and Assignment operator
Jussi Pohjolainen
 
Class method
kamal kotecha
 
Introduction to Functional Programming in JavaScript
tmont
 
JAVA Variables and Operators
Sunil OS
 
Java ppt Gandhi Ravi ([email protected])
Gandhi Ravi
 
Tutconstructordes
Niti Arora
 
Introduction to julia
岳華 杜
 
Java Simple Programs
Upender Upr
 
C# Generics
Rohit Vipin Mathews
 

Similar to More on Classes and Objects (20)

PPTX
class and objects
Payel Guria
 
PDF
Implementation of oop concept in c++
Swarup Kumar Boro
 
PPT
Lecture10
elearning_portal
 
PPT
Lecture07
elearning_portal
 
PDF
computer science sample papers 2
Swarup Kumar Boro
 
PDF
Computer science-2010-cbse-question-paper
Deepak Singh
 
DOCX
Opp compile
Muhammad Faiz
 
PPT
Lecture 12: Classes and Files
Dr. Md. Shohel Sayeed
 
PPT
Lecture09
elearning_portal
 
PPTX
Data types
Nokesh Prabhakar
 
PDF
Ds lab handouts
Ayesha Bhatti
 
PPSX
Constructor and destructor
Selvin Josy Bai Somu
 
PDF
Ch 4
AMIT JAIN
 
PPTX
New presentation oop
Ch shampi Ch shampi
 
PPT
Lecture21
elearning_portal
 
PPTX
Chp 3 C++ for newbies, learn fast and earn fast
nhbinaaa112
 
PDF
Cpprm
Shawne Lee
 
PPT
Computer Programming- Lecture 7
Dr. Md. Shohel Sayeed
 
PDF
CBSE Question Paper Computer Science with C++ 2011
Deepak Singh
 
class and objects
Payel Guria
 
Implementation of oop concept in c++
Swarup Kumar Boro
 
Lecture10
elearning_portal
 
Lecture07
elearning_portal
 
computer science sample papers 2
Swarup Kumar Boro
 
Computer science-2010-cbse-question-paper
Deepak Singh
 
Opp compile
Muhammad Faiz
 
Lecture 12: Classes and Files
Dr. Md. Shohel Sayeed
 
Lecture09
elearning_portal
 
Data types
Nokesh Prabhakar
 
Ds lab handouts
Ayesha Bhatti
 
Constructor and destructor
Selvin Josy Bai Somu
 
Ch 4
AMIT JAIN
 
New presentation oop
Ch shampi Ch shampi
 
Lecture21
elearning_portal
 
Chp 3 C++ for newbies, learn fast and earn fast
nhbinaaa112
 
Cpprm
Shawne Lee
 
Computer Programming- Lecture 7
Dr. Md. Shohel Sayeed
 
CBSE Question Paper Computer Science with C++ 2011
Deepak Singh
 
Ad

Recently uploaded (20)

PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Ad

More on Classes and Objects

  • 1. MORE ON CLASSES AND OBJECTS Chapter 4
  • 2. Data Members Types of data member :  Constant data members.  Mutable data members.  Static data members.
  • 3. Member Functions Different types of member functions:  Nested Member functions.  Overloaded member functions.  Constant member function.  Member functions with default arguments.  Inline member functions.  Static member functions.
  • 4. Constant data members  The data members whose value cannot be changed throughout the execution of the program.  They are declared by preceding the qualifier const. Example: const int x = 10;
  • 5. Example: #include<iostream> void main() { const int x = 10; x++; // error cout<< x<<endl; }
  • 6. Mutable data members  If the need arises such that the constant member functions has to modify the value of the data members then the data member has to be declared by prefixing the keyword „mutable‟.
  • 7. Example: #include<iostream> class x { int a ; mutable int b; public: void xyz() const { a++; // error b++; // legal } }; void main() { X x2; X2.xyz(); }
  • 8. Constant member function #include<iostream.h> void main() class x { { x x1; x1.getdata(56); int a; Cout<< x1.setdata()<<endl; public: } void getdata(int x) { a=x; } int setdata() const { a++; // error return a; } };
  • 9. Static data member  Those members whose members are accessed by all the objects of a class.  It is not own by any object of a class.  Only one copy of a static data member is created for a class which can be accessed by all the objects of that class.
  • 10. Example: #include<iostream.h> class x void main() { { x x1,x2; static int a; x1.display(); x2.display(); int b; x1.getdata(1); x2.getdata(2); public: x1.display(); x2.display(); void getdata(int x) } { Output: 0 b=x; 0 a++; 2 2 } void display(void) { cout<< a<< endl; } }; int x :: a;
  • 11. Static member function #include<iostream.h> void main() class sample { { sample s1,s2; Sample :: getdata(1)//invoking static member function static int a; s1.display(); s2.getdata(2);// invoking static member function using object s2.display(); public: } Output: 1 Static void getdata(int x) 2 { a=x; } void display(void) { cout<< a<< endl; } }; Int sample :: a;
  • 12. Nested member function #include<iostream> void main() class sample { { sample e; t =e.get_data (34); int x; cout<< t << endl; public: } Output: void get_data(int); Nested member function void message(char *); 34 }; int sample :: get_data(int a) { x=a; message(“Nested member function”); return x; } void sample :: message(char *s) { cout<< s<< endl; }
  • 13. Overloaded member function With single class: Class A { Void main() Public: { A a1; void display(void); a1.display(void); void display(int); a1.display(20); } }; Output: void a :: display(void) Hello { 20 cout<< “Hello”<< endl; } void a :: display(int d) { cout<<d<< endl; }
  • 14. Overloaded member function Two different classes. Class A Void main() { { A a1; Public: B b1; void display(void); a1.display(void); }; b1.display(void); Class B } Output: { Hello Public: World void display(void); }; void A :: display(void) { cout<< “Hello”<< endl; } void B :: display(void) { cout<<“World”<< endl; }
  • 15. Member functions with default arguments #include<iostream> class addition { Public: void add(int, int = 2); }; void addition :: add(int a, int b) { return(a+b); } Void main() { addition a; a.add(5,6); a.add(6); } Output 11 8
  • 16. Inline function Class test { void main() private : { int a; test t; int b; int a,b; public: cout<<“enter the two numbers” << endl; void set_data(int , int ) cin>> a >> b; int big() // t.set_data(a,b); automatic inline function cout<<“the largest number is ” << { t.big() << endl; if (a > b) } return a; else return b; } }; inline void test :: set_data(int x, int y) { a=x; b=y; }
  • 17. Friend function  To provide non-member function to access private data member of a class, c++ allow the non-member to be made friend of that class.  Syntax: friend<data_type> <func_name>();
  • 18. Example Friend non-member function: Class sample { Int a; Public: Friend void change(sample &); }; Void change(sample &x) { x.a= 5; } Void main() { Sample A; Change(A); }
  • 19. Example  Friend member function: Void test :: set_data(sample &a, int b) Class sample; // forward declaration. { Class test a.x= b; } { Int sample :: get_data(void) Public: { Return x; Void set_data(sample &, int); } }; Void main() { Class sample Sample e; { Test f; f.set_data(5); Private: Cout<< e.get_data()<< endl; Int x; } Public: Int get_data(void); Friend void test :: set_data(sample &, int); };
  • 20. Friend class  A class is made friend of another class. For example, If a class X is a friend of class Y then all the member function of class X can access the private data member of class Y. Declaration: friend class X;
  • 21. Example of friend class # include<iostream> Class Y; void Y :: change_data(X &c, int p, int q) Class X { { c.X = p; c.Y = q; Int x,y; } Public: void X :: show_data() Void show_data(); { Cout<< x << y << endl; friend class Y; } }; Int main() { Class Y X x1; { Y y1; Y1.change_data(x1,5,6); Public: x1.show_data(); void change_data( X &, int, int); return 0; }; }
  • 22. Array of class objects  Array of class objects is similar to the array of structures.  Syntax: Class <class_name> { // class body }; <class_name><object_name[size]>;
  • 23. Example: Class Employee { Char name[20]; Float salary; Public: Void getdata(); Void display(); }; Employee e[5];
  • 24. Passing object to functions  By value  By reference  By pointer
  • 25. By value Here only the copy of the object is passed to the function definition. The modification on objects made in the called function will not be reflected in the calling function.
  • 26. By reference Here when the object is passed to the function definition, the formal argument shares the memory location of the actual arguments. Hence the modification on objects made in the called function will be reflected in the calling function.
  • 27. By pointer Here pointer to the object is passed. The member of the objects passed are accessed by the arrow operator(->). The modification on objects made in the called function will be reflected in the calling function.
  • 28. Example #include<iostream> void set(A *z,int t) { class A z->a = t; { } int a; int main() public: { A a1; void set(A, int); // call by value a1.a = 10; void set(int, A &); // call by reference cout<<a; a1.set(a1,5);// by value void set(A *, int); // call by pointer cout<<a; }; a1.set(20,a1);// by reference cout<<a; void set(A x,int p) a1.set(&a1,30);// by pointer { cout<<a; } x.a = p; } Output: 10 void set(int q, A &y) 10 { 20 30 y.a = q; }
  • 29. Nested class  Class within a class  Example: class A { // class body class B { // inner class body }; }