Professional Documents
Culture Documents
4 Class
4 Class
Introduction
struct student
{
char name[20] ;
int roll_number;
float total_marks;
};
class class_name
{
private:
variable declarations;
function declarations;
public:
variable declarations;
function declaration;
};
Data hiding in class
A Simple Class Example
class item
{
int number;
float cost;
public:
void getdata(int a, float b);
void putdata(void);
}; //ends with semicolon
Accessing Class Members
As pointed out earlier, the private data of a class can be
accessed only through the member functions of that
class.
The main( ) cannot contain statements that access
number and cost directly.
The following is the format for calling a member function:
object_name. function_name (actual_arguments);
};
const m = 50;
//------------------------------ Class Declaration ----------------------------
class ITEMS
{
int itemCode[m];
float itemPrice[m];
int count;
public:
void CNT(void) { count = 0; } // initializes count to 0
void getitem(void);
void displaySum(void);
void remove(void);
void displayItems(void);
};
//========== member functions definitions ===========
void ITEMS : : getitem( void) // assign values to members
{
cout << "Enter item code:";
cin >> itemCode [ count ];
cout << "Enter item cost :";
cin >> itemPrice[ count ];
count++;
}
void ITEMS : : displaySum( void ) // display total value
{
float sum = 0;
for( int i = 0; i < count; i++)
sum += itemPrice[i];
cout << "\nTotal value :" << sum <<"\n";
void ITEMS : : remove( void ) // Delete a specified item
{
int a;
cout << "Enter item code :";
cin >> a;
for( int i = 0; i < count; i++)
if (itemCode[i] == a )
itemprice[i]=0;
}
void ITEMS : : displayItems(void) // displaying items
{
cout << "\n Code price \n";
for(int i = 0; i < count; i++)
{
cout <<"\n" << itemCode[i];
cout <<" " << itemPrice [i];
}
cout <<"\n";
// ============ Main program ==============
int main(void)
{
ITEMS order;
order.CNT( );
int x;
do // do …. while loop
{
cout << "\n Enter Your choice";
cout << "\n1 : Add an item ";
cout <<"\n2 : Display total value ";
cout <<"\n3 : Delete an item";
cout <<"\n4 : Display all items";
cout <<"\n5 : Quit";
cout<<"\n\nWhat is your option?";
cin >> x;
switch(x)
{
case 1 : order.getitem(); break;
case 2 : order.displaySum(); break;
case 3 : order.remove(); break;
case 4 : order.displayItems(); break;
case 5 : break;
default : cout << "Error in input ; try again\";
}
} while ( x != 5); // do .. while ends
return(0);
}
Memory Allocation for Objects
Static member functions
A static data member has certain special characteristics.
These are:
class X
{
static int count ;// declaration within the class
-----
-----
};
The array elements being objects have space only for their data
members. Their member functions are stored separately at one
place and will be used by all the objects of that class type.
const int size = 10;
item order[size]; // object array created
int main()
{
Int itmno;
float cost;
for(int i=0; i<size; i++) // Get values for all items
{
cout << "Enter Item no & Price for Item" << i+1 << "\n";
cin >>itmno>>cost;
order[i].getdata(itmno, cost);
}
For(i=0; i<size; i++)
{
cout << "Item " << i+1 << "\n";
order[i].putdata(); // Invoke putdata() for a particular object
Objects as Function Arguments
class X
{
……
……
int fun( ); //member function of X
……
};
class Y
{
……..
……..
friend int X : : fun( ); // fun1 of X
……. // is friend of Y
};
We can also declare all the member functions of one
class as the friend functions of another class. In such
cases, the class is called a friend class. this can be
specified as follows:
class Z
{
…….
friend class X; //all member functions of X are friend to
Z
};
#include <iostream.h>
class ABC; // forward declaration
//---------------------------------------------------------
class XYZ
{
int x;
public:
void setvalue(int i) { x = i; }
friend void max( XYZ, ABC);
};
//----------------------------------------------------------
class ABC
{
int a;
public:
void setvalue(int i) { a = i; }
friend void max( XYZ, ABC);
};
void max ( XYZ m, ABC n) // Definition of friend
{
if (m.x >= n.a)
cout << m.x;
else
cout <<n.a;
}
//------------------------ MAIN SECTION -----------------------------
int main ()
{
ABC abc;
abc.setvalue(10);
XYZ xyz;
xyz.setvalue(20);
max(xyz,abc);
}
///////////////////[ swapping private data of classes]//////////////
#include <iostream.h>
class class_2;
class class_1;
{
int value1;
public:
void indata(int a) { value1 = a;}
void display (void) { cout << value1 << "\n";}
friend void exchange ( class_1 &, class_2 &);
};
class class_2
{
int value2;
public:
void indata( int a) { value2 = a;}
void display(void) { cout << value2 << "\n";}
friend void exchange ( class_1 &, class_2 &);
void exchange( class_1 x, class_2 & y)
{
int temp = x.value1;
x.value1 = y.value2;
y.value2 = temp;
}
int main ()
{
class_1 C1;
class_2 C2;
C1.indata(100);
C2.indata(200);
cout << "values before exchange" << "\n";
C1.dispaly();
C2.dispaly();
exchange(C1,C2); // swapping
cout << " Values after exchange"<<"\n";
C1.display( );
C2.display();
Function returning objects
The program that adds two complex numbers:
#include<iostream.h>
#include<conio.h>
class cno
{
int a,b;
public:
void getno(void)
{
cout<<"Enter a and b of a+ib"<<endl;
cin>>a>>b;
}
cno sum(cno c)
{
cno tmp;
tmp.a=a+c.a;
tmp.b=b+c.b;
return (tmp);
}
void print(void)
{
cout<<a<<"+i"<<b;
}
};
void main()
{
clrscr();
cno x,y,z;
x.getno();
y.getno();
z=x.sum(y);
cout<<"Sum = ";
z.print();
getch();
}
const Member Function
If a member function does not alter any data in the
class then we may declare it as a const member
function as follows:
class A
{
private:
int m;
public:
void show();
};