More on Classes and Objects
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

More on Classes and Objects

on

  • 861 views

 

Statistics

Views

Total Views
861
Views on SlideShare
861
Embed Views
0

Actions

Likes
0
Downloads
35
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

More on Classes and Objects Presentation Transcript

  • 1. MORE ON CLASSESAND OBJECTSChapter 4
  • 2. Data MembersTypes of data member : Constant data members. Mutable data members. Static data members.
  • 3. Member FunctionsDifferent 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++; // errorcout<< 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++; // errorb++; // 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++; // errorreturn 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: 0b=x; 0a++; 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 functionstatic int a; s1.display(); s2.getdata(2);// invoking static member function using object s2.display();public: } Output: 1Static 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{ 20cout<< “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:{ HelloPublic: Worldvoid display(void);};void A :: display(void){cout<< “Hello”<< endl;}void B :: display(void){cout<<“World”<< endl;}
  • 15. Member functions with defaultarguments#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);}Output118
  • 16. Inline functionClass 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. ExampleFriend 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 valueHere 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 referenceHere 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 pointerHere 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 valuevoid 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: 10void set(int q, A &y) 10{ 20 30y.a = q;}
  • 29. Nested class Class within a class Example: class A { // class body class B { // inner class body }; }