Instructions:
Below mention code is compiled in Code Blocks and Visual Studio 2015 and output snap is attached.. If any problem you feel and want explanation feel free to contact.
Code:
Output:
Related Articles:
Below mention code is compiled in Code Blocks and Visual Studio 2015 and output snap is attached.. If any problem you feel and want explanation feel free to contact.
Code:
/**************************************************|
/*************C++ Programs And Projects************|
***************************************************/
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#pragma warning(disable:4996)
#pragma warning(disable:4700)
using namespace std;
//************* -CONCEPT OF CLASS &
OBJECT********************
void cl_ob()
{
int c = 1;
for (; !c == 0;)
{
// clrscr();
cout
<< "\t-------------CONCEPT
OF CLASS & OBJECT------------";
cout
<< "\n\n\n1) What is
class & object?\n\n2) What is the
jeneral format of them?\n\n";
cout
<< "3) Show
example.\n\n";
//cout<<"\n\t\t\t\t\t\t<<
0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nCLASS:-
\n\nClass is a basic bulding block of \
object-orinted programming.\nIt is an
abstraction that captures the \
common structure and common behaviour of a set
of objects\n\n \
\n\n\nOBJECT:-\n\nAn objects is somthing that
has an identity,\
a
state,and a behaviour.The state is member variables\n\
or
data members and the behaviour is member functions.\n\n\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nGENERAL FORMAT
OF CLASS:-\n";
cout
<< "class
class_name{\n\n private data &
functions\
\n\n\tacess specifier:data &
functions\n\n\tacess specifier:data & functions\
\n\n\t......\n.......\n};\n\n\n";
cout
<< "GENERAL FORMAT OF
OBJECT:-\n\n\n";
cout
<< "class_name
obj_name\n\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
// clrscr();
cout
<< "\t\t\t--------:EXAMPLE
ZONE:----------\n\n\n\t\t\t\
\n\ninclude<iostream.h>\n\nclass
test{\nint a;\npublic:\n\nvoid get(){a=10;}\
\nvoid
print(){cout<<a;}\n\n\t};\n\n\nvoid main(void)\n{\ntest X;\n\
X.get();\nX.print();\n}\n\n\t\t\t<1
for run ,0 for back>\n\n\nENTER YOUR CHOICE FOR\
EXAMPLE:- ";
int e;
cin
>> e;
if (e == 1)
{
class test {
int a;
public:
void get() { a = 10; }
void print() { cout << a; }
};
test X;
X.get();
cout
<< "\nINPUT:-\n10\nOUTPUT:-\n";
X.print();
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
}
}
}
//************** FEATURES OF OOP-*********************
void feature(void)
{
int c = 1;
for (; !c == 0;)
{
// clrscr();
cout
<< "--------------FEATURES
OF OOP---------------\n\n\n";
cout
<< "1. Abastraction\n\n2.
Encapsulation\n\n3. Dynamic binding\n\n4. Inheritance ";
cout
<< "\n\n\n\n\t\t\t\t\t\t<<0
for quit\n\n\n";
cout
<< "ENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------ABSTRACTION------------";
cout
<< "\n\n\n1) What is
abstraction?\n\n2) Why used abstraction?\n\n";
cout
<< "\n\t\t\t\t\t\t<<
0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nABSTRACTION:-\n\nThe
ability for a program to ignore\
some aspects of the information .That mean's
,abstraction is the ability \
to focus the essential.\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n Abstraction is
used to focus essentials in a program.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
}
}
break;
}
case 2:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------ABSTRACTION------------";
cout
<< "\n\n\n1) What is
encaptulation?\n\n2) Why used encaptulation?\n\n";
cout
<< "\n\t\t\t\t\t\t<<
0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\nENCAPSULATION:-\n\n\nEncapsulation
meam's information hiding.\
The wrapping up of data and functions
into a single unit is known as\
encapsulation.\n\nIt ensures that,
objects cannot change the internal\
state of other objects in unexpected
ways; only the object's own\
internal methods are allowed to access
its state.\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n To hide data or
information in a program so that a object\
can not change other object in unexpected ways
is used encaptulation.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
}
}
break;
}
case 3:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------DYNAMIC
BINDING------------";
cout
<< "\n\n\n1) What is
dynamic binding?\n\n";
cout
<< "\n\t\t\t\t\t\t<<
0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nDYNAMIC
BINDING:-\n\nDynamic binding means that, the code \
associated with a given procedure is not
known untill the time of the call \
at run time.Function overloading is the
example of dynamic binding.Because \
if we use function overloading then
before runtime the compiller do not know\
what function is used.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
}
}
break;
}
case 4:
{
cout
<< "\n\nINHERITANCE:-\n\nInheritance
is the process by which objects\
of one class acquire the properties of
objects of another class. It\
supports the concept of hierichal
classification or reuseability property.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
}
}
}
//********* >PRIVATE,PUBLIC &
PROTECTED MEMBERS< *******
void ppp_m()
{
int m = 1;
for (; !m == 0;)
{
system("cls");
cout
<< "-------->PRIVATE,PUBLIC
& PROTECTED MEMBERS<-----------\n\n\n";
cout
<< "1. Varribales\n\n2.
Functions\n\n\n\t\t\t<0 for main menue>\n\n\n\t\
ENTER YOUR CHOICE:- ";
cin
>> m;
switch (m)
{
case 1:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\n\n----------------PRIVATE,PUBLIC
& PROTECTED VARRIABLES-\
-----------------\n\n\n1> what is
private,public & protected varriables?\n\n\
2> why used private,public &
protected varribales?\n\n3> show example\n\n\n\t\
\t\t<<0for
back>>\n\n\n\nENTER YOUR CHOICE:-
";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nPRIVATE
VARRIABLE:-\n\nprivate varribales\
are not accessible directly using dot
opetrator.The scope of this varriables\
are only within class.It can be accessed by
only public functions.\n\n\n\
PUBLIC VARRIABLES:-\n\npublic varribales are
accessible directly using dot\
operator.The scope of this varriables are
outside class.Any object or functin\
can directly access public varriables.\n\n\n
PROTECTED VARRIBALES:-\n\nThe\
feature of protected varribales are same as
private varriables.The main\
difference between private & protected
varriavbles are ,private varribles\
cannot be inherited but protected varribles
can be inherited.\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\n1) private
varriables are used to data\
hiding.It also help us to not change any
data unconciously\n\n2) public varriables\
are used to access any data directly using dot
operator.\n\n3) protected varriables\
are used for inherit any private
data.\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
system("cls");
cout
<< "\n\n---------EXAMPLE
ZONE-----------\n\n\n\n";
cout
<< "
#include<conio.h>\n#include<iostream.h>\n\
class test1{\nprotected:\nint x;\npublic:\ntest1(){x=20;}\n};\n\
class test:public test1{\nint
a;\npublic:\nint b;\nvoid get(){a=5;}\nint show()\
{return a*x;}\n};\nvoid
main(void)\n{\nclrscr();\ntest B;\ntest1 C;\nB.b=2;\n\
B.get();\n\n\n\ncout<<multiplying
a,b & c=<<B.show()*B.b;\n}\n\n\n\t\t\t<1 \
for run o for back>\n\n\nENTER YOUR
CHOICE:- ";
int e;
cin
>> e;
if (e == 1)
{
class test1 {
protected:
int x;
public:
test1()
{ x = 20; }
};
class test :public test1 {
int a;
public:
int b;
void get() { a = 5; }
int show() { return a*x; }
};
test B;
test1 C;
B.b
= 2;
B.get();
cout
<< "\n\nINPUT:-\na=5, b=2,
c=20\n\n";
cout
<< "OUTPUT:-\n\nmultiplying
a,b & c="
<< B.show()*B.b;
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
}
}
break;
}
case 2:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\n\n----------------PRIVATE,PUBLIC
& PROTECTED FUNCTION-\
-----------------\n\n\n1> what is
private,public & protected member functions?\n\n\
2> why used private,public &
protected functions?\n\n3> show example\n\n\n\t\
\t<0for main menu>\n\n\n\nENTER
YOUR CHOICE:- ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nPRIVATE MEMBER
FUNCTION:-\n\nprivate member functions\
can not use directly using dot opetrator
by any object.The scope of this functions\
are only within class.It can be accessed by
only public functions.\n\n\n\
PUBLIC MEMBER FUNCTIONS:-\n\npublic member
functions are accessible directly\
using dot operator under the object of that
class.The scope of this functoins\
are outside class.Any object or member functin
can directly access public\
functions.\n\n\nPROTECTED MEMBER
FUNCTIONS:-\n\nThe feature of protected\
member functions are same as private private
member functions.The main\
difference between private & protected
functions are,private functions cannot\
be
inherited but protected functions can be inherited.\n\n\n\n\n\n\t\t\t\
->->->PRESS ENTER FOR
NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\na) private
member functions are used\
for data hiding.It is also used to hide
perticular task within a class so that\
this task are not changed unconsiously.\n\n2)
public member functions are\
used to access any private data and private
functions.It can access any data\
or
functions directly.\n\n3) protected member functions are used for inheritance.\
Protected member\n\n\functions can be
inherited & derived class can be use \
it.\n\n\n\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
system("cls");
cout
<< "\n\n\n---------EXAMPLE
ZONE-----------\n\n\n\n";
cout
<< "#include<conio.h>\n#include<iostream.h>\nclass\
pro{\nint x;\nprotected:\nint
get(){return x;}\npublic:\npro(){x=2;}\n};\
class test:public pro{\nint a;\nint
pri(){a=5;return a;}\npublic:\nint c;\
int access(){return
pri()*get();}\n};\nvoid main(void)\n{\ntest B;\npro C;\nB.c=2;\
cout<<\n\n\n\nmultiplying a and x,
sum=<<B.access();\ngetch();\n}\n\n\n\t\t\t\
<1 for run 0 for back>\n\n\nENTER
YOUR CHPICE:- ";
int e;
cin
>> e;
if (e == 1)
{
class pro {
int x;
protected:
int get() { return x; }
public:
pro()
{ x = 2; }
};
class test2 :public pro {
int a;
int pri() { a = 5; return a; }
public:
int c;
int access() { return pri()*get(); }
};
test2 B;
pro C;
B.c
= 2;
cout
<< "\n\nINPUT:-\n\na=5 x=2\n\nOUTPUT:-\n\n";
cout
<< "multiplying a and x,
sum=" << B.access();
cout
<< "\n\n\t\t->PRESS
ENTER FOR NEXT<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
}
}
}
}
}
}
//************* FUNCTION OVERLOADING
******************
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
void over_l()
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------FUNCTION
OVERLOADING------------";
cout
<< "\n\n\n1) What is
function overloading?\n\n2) Why used function overloading?\n\n";
cout
<< "3) What is the
jeneral format of function overloading?\n\n4) Show example.\n\n\n";
cout
<< "\n\t\t\t\t<<0
for main menu";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "Function overloading
means one name multiple forms.It allows us\
to
have more than one functions with the same name but performs different tasks\
in
a program depending on the argument lists in the function call.The\
correct function to be invoked is determined
by checking the the number and\
type of the arguments but not on the functions
type. \n\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "Function overloading
is used for same function name but\
different purposes.By using function
overloading consecpt, we can design\
a family of functions with one function
name but with different argument lists\
.
n\n\n\n\n\n\n\n\t\t\t->->->PRESS ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\n\n--->->GENERAL
FORMAT OF FUNCTION OVERLOADING:<-<---\n";
cout
<< "\n\n\nDECLARATION:-\n\n\ndata_type1
function_name(data_type1);\
\n\ndata_type1
function_name(data_type1,data_type1);\n\ndata_type1 \
function_name(data_type1,data_type2);\n\ndata_type1
function_name\
(data_type2,data_type1);\n\ndata_type1
function_name(data_type2,data_type2);";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\n\t\t\t--------:EXAMPLE
ZONE:----------\n\n\n\n\ninclude\
<iostream.h>\n\nint add(int a,int
b)\n{\nreturn a+b;\n}\n\ndouble add\
(double a,double b)\n{\nreturn
a+b;\n}\n\n\nvoid main(void)\n\n{\n\ncout<<\
after first adding
sum=<<add(5,10)<<\n\nafter 2nd adding sum=<<add(5.5,5.4);\
\n}\n\n\t\t\t<<1 for run, 0 for
back>>\n\n\n\nENTER YOUR CHOICE FOR EXAMPLE:- ";
int e;
cin
>> e;
if (e == 1)
{
cout
<< "\nINPUT:-\n\na=5 b=10\n\na=5.2 b=5 \n\n\nOUTPUT:-\n\n";
cout
<< "after first adding
sum=" << add(5, 10) << "\n\nafter 2nd adding\
sum=" << add(5.5, 5.4);
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
}
}
}
//************** DEFAULT PARAMETER
*******************
int def(int a, int b = 10)
{
return a + b;
}
void def_pa()
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------DEFAULT
PARAMETER------------";
cout
<< "\n\n\n1) What is
default paramereter?\n\n2) Why used default parameter?\
\n\n3) What is the jeneral format of
default parameter?\n\n4) Show example.\
\n\n5)specialty of default
parameter.\n\n\t\t\t\t\t\t<< 0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nDEFAULT
PARAMETER:-\n\nDefault parameter is a parameter, where the\
formal parameter is initialize primarily
and this value is used if any actual\
parameter is missed at the time of function
calling.If we pass the value for\
that default parameter as actual parameter
then that passing value is used\
otherwise the primary value is
used\n\n\n\n\n\t\t\t->->->PRESS ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nAt the time of
function calling, if we don't pass or \
miss any actual parameter then to perform
the task of that function properly\
we
use default parameter.Thus to select a value for primarily and perform\
the task of that function default parameter is
used.\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\n\nGENERAL FORMAT
OF DEFAULT PARAMETER:-\n\n";
cout
<< "data_type
function_name(data_type varr_name=\
value,data_type
varr_name=value)\n\n{\n\n\\body;\n\n}\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\t\t\t--------:EXAMPLE
ZONE:----------\n\n\n\
\n\ninclude<iostream.h>\nint
def(int a,int b=10)\n{\n\nreturn a+b;\n\n}\n\n\nvoid main(void)\n{\
\n\n\n\cout<<a+b=<<def(20);\n\n}\n\n\t\t\t<<1
for run, 0 for quit >>\n\n\n\n\
ENTER YOUR CHOICE FOR EXAMPLE:- ";
int e;
cin
>> e;
if (e == 1)
{
cout
<< "\nINPUT:-\nas actual
parameter a=20\nas default parameterb=10\
\n\nOUTPUT:-\n";
cout
<< "a+b=" << def(20);
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
break;
}
case 5:
{
cout
<< "\n\nSPECIALTY OF
DEFAULT PARAMETER:-\n\n\n<1> when we initialize\
any default argument, then only value is used
not any varriable.suppose,we \
cannot write the follwing program
-\n\nint spesal(int c,int a=10, int b=a)\
{return c+a+b;}\n\nvoid
main(void)\n\n{\ncout<<spesal(10);\n\n}\n\n\n\
<2> after one default parameter, we
have to use every parameter as default\
parameter in a function.that means we cannot
write following coding -\n\n\
int spesal(int c=10,int a, int b){return
c+a+b;}\n\n\nvoid main(void)\n\n\
{\ncout<<spesal(10,10);\n\n}\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
}
}
}
//********** PASSING AND RETURNING
OBJECTS *************
class val {
int x;
public:
void put_x(int a) { x = a; }
int get() { return x; }
void print() { cout << x; }
};
val min(val B)
{
val temp;
int a = -B.get();
temp.put_x(a);
return temp;
}
class reff {
int x;
public:
void put(int a) { x = a; }
int get() { return x; }
void print() { cout << x << " "; }
};
int add(reff *p, reff *q)
{
int a, b;
a
= p->get();
b
= q->get();
(*p).put(a + 1);
(*q).put(b + 1);
return p->get() + q->get();
}
void pass_ret()
{
int m = 1;
for (; !m == 0;)
{
system("cls");
cout
<< "-------->PASSING
AND RETURNING OBJECTS<-----------\n\n\n";
cout
<< "1. Pass by value\n\n2.
Pass by reference\n\n\n\t\t\t<0 for \
main menue>\n\n\nENTER YOUR
CHOICE:- ";
cin
>> m;
switch (m)
{
case 1:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "1> what is passing
& returning by value?\n\n\
2> why used passing & returning by
value of objects?\n\n3> Genaral format\
\n\n4> show
example\n\n\n\t\t\t<<0for back>>\n\n\n\nENTER YOUR CHOICE:- ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nPASSING &
RETURNING BY VALUE:-\n\nat \
the time of function calling,if we pass
value as actual parameter then it is \
call pass by value.And at the time of
returning from a function, if we \
return value then it is called return by
value.when we use pass by value, \
then a coppy is passed to function, and
so if we change the value in\
that function, the main value is not
changed.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nsometime in
program, we need to \
change the value of formal parameter in a
function,but we need to not change \
that actual value in a function.In this
situation we need to use pass by \
value.Because in this case the copy of
actual parameter(here object) is \
passed to function.sometime we need to
pass or return all the features of a \
class.that time we use an object of that
class to pass or return because an \
object of a cllass posses all the
features.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\nGENARAL
FORMAT:-\n\n\nclass_name \
function_name(class_name
object_name)\n\n{\n\nclass_name object\n\n....\n..\
...\n\nreturn object;\n\n}\n";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\n\n\n---------EXAMPLE
ZONE-----------\n\n\n\n\
\n#include<iostream.h>\nclass
val{\nint x;\npublic:\n\void put_x(int a){x=a;}\
\nint get(){return x;}\nvoid
print(){cout<<x;}\n};\n\val min(val B)\n{\nval \
temp;\nint
a=-B.get();\ntemp.put_x(a);\nreturn temp;\n}\n\nvoid main(void)\
\n{\nval B,C;\nB.put_x(15);\nC=min(B);\n
C.print();\n}";
int e;
cout
<< "\n\n\nENTER YOUR
CHOICE:- ";
cin
>> e;
if (e == 1)
{
cout
<< "\n\nINPUT:-\n\n 15\n\n\nOUTPUT:-\n\n";
val B, C;
B.put_x(15);
C
= min(B);
C.print();
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
break;
}
}
}
break;
}
case 2:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "1> what is passing
& returning by reference?\n\n\
2> why used passing & returning by
reference of objects?\n\n3> Genaral \
format \n\n4> show
example\n\n\n\t\t\t<<0for back>>\n\n\n\nENTER YOUR CHOICE:- ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nPASSING &
RETURNING BY REFERENCE:-\n\n\
at the time of function calling,if we
pass address as actual parameter\
then it is call pass by reference.And at
the time of returning from a \
function, if we return address then it is
called return by reference.when \
we use pass by reference, then a the
actual address is passed to function, \
and so if we change the value in that
function, the main value is changed.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nsometime in
program, we need to \
change the value of formal parameter in a
function,and we want to use that \
change value outside that function in a
program.In this situation we need \
to use pass by reference.Because in this
case the address of actual \
parameter(here object) is passed to
function.sometime we need to pass or \
return all the features of a class.that
time we use an object of that\
class to pass or return because an object
of a cllass posses all the \
features.moreover if we want to use the
changable value of that object \
outside the function then we can use
passing & returning object by reference.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\nGENARAL FORMAT OF
PASS BY REFERENCE:-\n\
\n\nreturn_type function_name(class_name
*object_name)\n\n{\n\n\\\bobyn;\n\n\
\n}\n\n\n\nFUNCTION
CALLING:-\n\n\nfunction_name(& object_name);\n\n";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\n---------EXAMPLE
ZONE-----------\n\n\n\n\
#include<iostream.h>\nclass
ref{\nint x;\npublic:\nvoid \
put(int a){x=a;}\nint get(){return
x;}\nvoid print(){cout<<x<<"
";}\n\
};\nint add(ref *p,ref *q)\n{\nint
a,b;\na=p->get();\nb=q->get();\n(*p).\
put(a+1);\n(*q).put(b+1);\nreturn
p->get()+q->get();\n}\n\nvoid main(void)\
\n{\n ref
x,y;\nx.put(5);\ny.put(10);\nint z=add(&x,&y);\nx.print();\n\
y.print();\ncout<<z;\n}\n\n\t\t<1
for run, 0 for back>\n\nENTERYOUR CHOICE:-
";
int e;
cin
>> e;
if (e == 1)
{
cout << "\n\nINPUT:-\n\n5 10 \n\nOUTPUT:-\n\n";
reff x, y;
x.put(5);
y.put(10);
int z = add(&x, &y);
x.print();
y.print();
cout
<< z;
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
}
}
}
}
}
}
//*************** CONSTRUCTERS &
DESTRUCTORS *****************
void cons_des()
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------CONSTRUCTERS
& DESTRUCTORS ------------";
cout
<< "\n\n\n1) What is
constructor & destructor?\n\n2) Why used \
constructor & destructor?\n\n3) What
is the jeneral format of them?\n\n\
4) Show example.\n\n5) speciality
\n\t\t\t\t\t\t<< 0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nCONSTRUCTOR:-\n\nConstructor
is a public member \
function which is called
implicitly(clmpiller's automatically call is known \
as implicit call but manually call is
known as explicit call) when a object \
is created.It's name is same as class
name and it has no return type but can \
have
parameter.\n\n\nDESTRUCTOR:-\n\nDestructor is a public member function \
which is called implicitly when a object
is destructed from memmory.\
Destructor name is same as class name and
it has no return type and no \
argument and a tilde(~)charector is
situated before it's name.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nwe know that
constructor & destructor are called
\
implictly when an object is created, so
we can use them to perform that \
things which is needed all time in a
program.suppose, if we want to allocate\
memmory dynamically then we can use
constructor and to free memmory we\
can use destructor because the time to
create each object constructor is\
called implicitly and allocate memmory
for that object and at the time to \
vanish that object destructor is called
implictly and free allocated memmory \
for that object.moreover, by using
parameterical constructor we can assing\
value for private varriables.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\n\nGENERAL FORMAT
OF CONSTRUCTOR:-\n\n\nDECLARATION:-\n\n\n\
class_name(argument_list);\n\nCALLING:-\n\n*)IMPLICITLY:- class_name\
(actual_parameter_list);\n\n*)EXPLICITLY:-
class_name obj_name=class_name\
(actual_parameter_list);\n\n\n\nGENERAL
FORMAT OF DESTRUCTOR:-\n\n\n\
~class_name();";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\t\t\t--------:EXAMPLE
ZONE:----------\n\n\
\n#include<iostream.h>\nclass
test{\nint a;\npublic:\ntest(){cout<<\
constructing........;}\n~test(){cout<<destructing......;}\nvoid
get()\
{a=10;}\nvoid
print(){cout<<a<<endl;}\n};\n\nvoid main(void)\n{\ntest X;\n\
X.get();\nX.print();\n}\n\n\t\t\t<<1
for run, 0 for back >>\n\n\n\nENTER \
YOUR CHOICE FOR EXAMPLE:- ";
int e;
cin
>> e;
if (e == 1)
{
cout
<< "\nINPUT:-\n 10\nOUTPUT:-\n\n\n";
class test {
int a;
public:
test()
{ cout << "constructing........\n"; }
~test()
{ cout << "destructing......\n"; }
void get() { a = 10; }
void print() { cout << a << endl; }
};
{
test X;
X.get();
X.print();
}
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
case 5:
{
cout
<< "If there is a
constructor with one parameter then we can use\
assingment operator(=) as follows\n\nclass_name
obj_name=actual_parameter.\n\n ";
cout
<< "EXAMPLE:-\n\n\nclass
special{\nint x;\npublic:\nspecial(int a){x=a;}\n\
void print(){cout<<x;}\n};\n\nvoid main(void)\n{\nspecial
ob=5;\nob.print();\n}\n\
\n\nINPUT:-\n5\n\nOUTPUT:-\n5\n\n";
getch();
break;
}
}
}
}
//****************** FRIEND FUNCTION
***********************
class complex {
int x, y;
public:
complex()
{}
complex(int r, int i) { x = r; y = i; }
void print() { cout << "after adding: " << x << "+i" << y; }
friend complex add(complex, complex);
};
complex add(complex a, complex b)
{
complex z;
z.x
= a.x + b.x;
z.y
= a.y + b.y;
return z;
}
void fr_function()
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------FRIEND
FUNCTION------------";
cout
<< "\n\n\n1) What is
friend function?\n\n2) special charectaristics \
of friend function\n\n3) Why used friens
function?\n\n4) What is the jeneral \
format of friend function?\n\n5) Show
example.\n\n6) special case\n\n\n\
\n\t\t\t\t\t\t<< 0 for main
menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE:- ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nFRIEND
FUNCTION:-\n\nFriend function is generally a \
nonmember function but can access any
private or public data & functions \
using dot operator.It is declared within
class but defined outside class.\
The keyword 'friend' is used before
function return type at the time to \
declare but not used at the time to
defined.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nSPECIAL
CHARECTERISTICS OF FRIEND FUNCTION:-\n\n\
a> Friend function is not in the scope
of the class to which it is declared \
as friend\n\b>It cannot be called
using the object of the class c> Called \
like normal function\n\nd) cannot
directly access members\n\ne) Friend \
function may be either public or
private\n\nf) usally it has object as \
arguments\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "1. operator
overloading\n\n2. make the creation of some \
I/Ofunctions easily(like
template)\n\n3.Two or more class objects interect \
each other.\n";
getch();
break;
}
case 4:
{
cout
<< "\n\n\nGENERAL FORMAT
OF FRIEND FUNCTION:-\n\nclass class_name\
{\n....\n......\npublic:\nfriend
return_type function_name(parameter_list);\
\n\n.....\n.....\n\n};\n\nreturn_type
function_name(parameter_list)\n\
{\nbody\n}\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 5:
{
system("cls");
cout
<< "\t\t\t--------:EXAMPLE
ZONE:----------\n\n\ninclude<iostream.h>\
\nclass complex{\nint
x,y;\npublic:\ncomplex(){}\ncomplex(int r,int i)\
{x=r;y=i;}\n\nvoid
print(){cout<<after adding: <<x<<+i<<y;}\n\
friend complex
add(complex,complex);\n};\n\ncomplex add(complex a,complex b)\
\n{\ncomplex
z;\nz.x=a.x+b.x;\nz.y=a.y+b.y;\nreturn z;\n}\n\nvoid main(void)\
\n{\ncomplex
p(2,3),q(4,5),r;\nr=add(p,q);\nr.print();\n}\n\n\n\t\t\t<<1 \
for run, 0 for back>>\n\n\n\nENTER
YOUR CHOICE FOR EXAMPLE:- ";
int e;
cin
>> e;
if (e == 1)
{
cout
<< "\n\nINPUT:-\n2+i3\n4+i5\n\nOUTPUT:-\n\n";
complex p(2, 3), q(4, 5), r;
r
= add(p, q);
r.print();
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
case 6:
{
system("cls");
cout
<< " \nSPECIAL
CASE:-\n1)friend function has no 'this' pointer \
and instead of 'this' pointer reference
is used there.0\n\n2)we can use \ a member function of a class as a friend
function of another class.Then we \
have to use scope resulation
operator(::)to define that function and have to \
use dot operator to call that function.It
is the special case.EXAMPLE:-\n\n\
class A;\nclass X{\nint
x;\npublic:\nX(){}\nX(int a){x=a;}\nvoid max(A);\n};\
\n\nclass A{\nint
a;\npublic:\nA(){}\nA(int p){a=p;}\nfriend void X::max(A);\
\n};\nvoid X::max(A
q)\n{\nif(x>q.a)\ncout<<x;\nelse\ncout<<q.a is greater \
number\n;\n}\nvoid main(void)\n{\n X
x(10);\nA y(12);\nx.max(y);\n}\n\n\
INPUT:-\n10 12\naOUTPUT:-\n12 is greater number\n";
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
}
}
}
//****************** FRIEND CLASS
*******************
class A {
int a;
public:
A(int m) { a = m; }
friend class B;
};
class B {
int b;
public:
B(int n) { b = n; }
int mul(A);
};
int B::mul(A x)
{
return x.a*b;
}
void fr_class()
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------FRIEND
CLASS------------";
cout
<< "\n\n\n1) What is
friend class?\n\n2) Why used friend class?\n\n";
cout
<< "3) What is the
jeneral format of friend class?\n\n4) Show example.\n\n\n";
cout
<< "\n\t\t\t\t\t\t<<
0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nFRIEND CLASS:-
\n\nIf there is two class class A and class B\
,and class B is the friend of class A
then,all of the member function of class B\
can use all of the private member of
class A. \n\n\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\nIf we want to use
all of the membr function of a class as\
friend function of another class then it is
very difficult to write friend \
keyword before every function.In this
situation we can use friend class.\
It
is very helpful to use all the member function of a class as friend of \
another class.\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\n\nGENERAL FORMAT
OF FRIEND CLASS:-\n";
cout
<< "\n\nfriend class
class_name;\n\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\t\t\t--------:EXAMPLE
ZONE:----------\n\n\n\n\
#include<iostream.h>\nclass A{\nint
a;\npublic:\nA(int m){a=m;}\nfriend class B;\
\n};\nclass B{\nint b;\npublic:\nB(int
n){b=n;}\nint mul(A);\n};\nint B::mul(A x)\
\n{\nreturn x.a*b;\n}\nvoid
main(void)\n{\nB p(10);\nA q(10);\ncout<<p.mul(q);\
\n}\n\n\t\t\t<<1 for run 0 for exit
>>\n\n\n\nENTER YOUR CHOICE FOR EXAMPLE:-
";
int e;
cin
>> e;
if (e == 1)
{
B p(10);
A q(10);
cout
<< "INPUT:-\na=10 b=10\nOUTPUT:-\n";
cout
<< p.mul(q);
}
else if (e == 0)
break;
getch();
break;
}
}
}
}
//************* 'this' POINTER *********************
class t_pointer {
int x, y, z;
public:
t_pointer(int a, int b) { x = a; y = b; }
t_pointer add() { z = x + y; return *this; }
void print() { cout << z; }
};
void this_ptr()
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t-------------'this'
POINTER------------";
cout
<< "\n\n\n1) What is this
pointer?\n\n2) Why used this pointer?\n\n";
cout
<< "3) What is the
jeneral format of this pointer?\n\n4) Show example.\n\n\n";
cout
<< "\n\t\t\t\t\t\t<<
0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n'this' is a
special type of pointer which points to the\
object for which this function is
called.this pointer is passed autometically\
when a member function is called.Infact, it
behaves like as implicit argumwnts\
to
all the member functions.suppose:-\n\nclass test{\nint
a;\npublic:\ntest(){a=10;}\
\nvoid print(){cout<<a;}\n};\nvoid
main(void)\n{\ntest X;\nX.print();\n}\n\n\
In the above program when we write
'X.print();' then actually compller takes\
it
as 'X.print(*this)' and the *this points to the object X. similiarly 'cout\
<<a' is taken as
'cout<<this->a'.\n'this' pointer can be also called explicitly. ";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\nWhen we call a
member function then 'this' pointer is \
passed autometically as argument and
that's why we can use the the private\
varribales for calling object whitout passing
explicitly that object.Again\
when we overload a binary operator using a
member function then,we pass\
only one parameter to the funvction.The other
parameter is implicitly passed\
using 'this' pointer.Moreover when we compare
two or more object using a\
member function then we can return the calling
object as result using this\
pointer. 'this' pointer is used also for
cascading.\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\n\nGENERAL FORMAT
OF THIS POINTER:-\n";
cout
<< "\n\n\n\return
*this;";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\t\t\t--------:EXAMPLE
ZONE:----------\n\n#include<iostream.h>\n\
class t_pointer{\nint
x,y,z;\npublic:\nt_pointer(int a,int b){x=a;y=b;}\n\
t_pointer add()\n{\nz=x+y;\nreturn
*this;\n}\nvoid print(){cout<<z;}\n};\n\n\
void main(void)\n{\nt_pointer
A(10,15);\ncout<<here add() is called by A object\
and this function returnsthe obj A using this
pointer(*this) and again by using 'A.print()'\
print() is called and so
\nsum=;\nA.add().print();\n}\n\n\n\n\t\t\t\t<<1 for run 0 for exit
>> ";
cout
<< "\n\n\n\nENTER YOUR
CHOICE FOR EXAMP:-";
int e;
cin
>> e;
if (e == 1)
{
t_pointer A(10, 15);
cout
<< "\n\nINPUT:-\n\nx=10 y=15\n\nOUTPUT:-\n\n";
cout
<< "here add() is called
by A object and this function returns\
the obj A using this pointer(*this) and
again by using 'A.print()'\
print() is called and so sum\nz=";
A.add().print();
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
}
else if (e == 0)
break;
getch();
break;
}
}
}
}
//********* OPERATOR OVERLOADING
****************
class bin {
int a, b;
public:
bin()
{ a = 0; b = 0; }
bin(int m, int n) { a = m; b = n; }
bin operator +(bin);
void print() { cout << "1st sum=" << a << endl << "2nd sum=" << b; }
};
bin bin::operator+(bin x)
{
bin p;
p.a
= a + x.a;
p.b
= b + x.b;
return p;
}
class frnd {
int a, b;
public:
frnd()
{ a = 0; b = 0; }
frnd(int m, int n) { a = m; b = n; }
friend frnd operator +(frnd, frnd);
void print() { cout << a << endl << b; }
};
frnd operator+(frnd x, frnd y)
{
frnd p;
p.a
= x.a + y.a;
p.b
= x.b + y.b;
return p;
}
class mem {
int a, b;
public:
mem()
{ a = 0; b = 0; }
mem(int m, int n) { a = m; b = n; }
mem operator ++();
void print() { cout << a << endl << b << endl; }
};
mem mem::operator++()
{
a++;
b++;
return *this;
}
class fru {
int a, b;
public:
fru()
{ a = 0; b = 0; }
fru(int m, int n) { a = m; b = n; }
friend void operator ++(fru &);
void print() { cout << a << endl << b << endl; }
};
void operator++(fru &x)
{
x.a++;
x.b++;
}
void op_ovr()
{
int m = 1;
for (; !m == 0;)
{
system("cls");
cout
<< "-----------OPERATOR
OVERLOADING><-----------\n\n\n";
cout
<< "1. Using member
function\n\n2. Using friend function\n\n\n\t\t\t<0 for main menue>\n\n\n\t\
ENTER YOUR CHOICE:- ";
cin
>> m;
switch (m)
{
case 1:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t1> what is
operator overloading using member function?\
\n\n2> why use operator over
loading?\n\n3>rules of operator overloading\
\n\n4> genaral format\n\n5> show
example\n\n\n\t\t\t\<<0for back>>\n\n\n\n\
ENTER YOUR CHOICE:- ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nOPERATOR
OVERLOADING:-\n\nIn C++ user defined\
data type can be used the same way as the
built in data type.suppose, in C++\
we
can add two varriables of user defined types with the same syntax that is\
applied to the basic type.That is to say,C++
provides the operators with a\
special meaning for a data type.The process of
giving such special meaning\
to
an operator is known as operator overloading.To overload an operator a \
special function is needed which is called
operator function.If we use a\
member function as this operator function then
it is called operator overloading\
with member function.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nIn C++ by using
operator overloading,\
we
can use the same syntax that is applied to the basic data type for an
operator.\
It
provides an easy way to create a new defination and a new meaning for most\
of
the C++ operator.But we should not chnge the main meaning of operator. \
\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "RULES OF OPERATOR
OVERLOADING:-\n\na) The over\
loaded operator must have at least one user
defined operand.\n\nb) Over loaded\
operator must have follow the syntax rules of
original operators.\n\nc) We can\
not change the original meaning of an
operator.\n\nd) Operator function can not\
have any default argument.\n\ne) When we
overload an unary operator then we need\
not declare any parameter for operator
function.\n\nf) Only existing operator\
can be overloaded.\n\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 4:
{
cout
<< "GENARAL FORMAT OF
OPERATOR OVERLOADING USING \
MEMBER
FUNCTION:-\n\n\nDECLARATION:-\n\nreturn_type operator overloadable_operator\
(parameter_list);\n\nDEFINATION:-\n\nreturn_type
class_name::operator\
overloadable_operator(parameter_list)\n{\n\n\\body;\n\n}";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 5:
{
system("cls");
cout
<< "\n\n\n---------EXAMPLE
ZONE-----------\n\n\n\n\
1. binary operator over loading using
member function\n\n2. unary operator \
overloading using member
function\n\n\n\n\n\t\t\tENTER YOUR CHOICE:-
";
int ch;
cin
>> ch;
if (ch == 1)
{
cout
<< "#include<iostream.h>\nclass
bin{\nint a,b;\npublic:\nbin(){a=0;b=0;}\n\
bin(int m,int n){a=m;b=n;}\nbin operator
+(bin);\nvoid print(){cout<<1st sum=\
<<a<<endl<<2nd
sum=<<b;}\n};\n\nbin bin::operator+(bin x)\n{\nbin
p;\np.a=a+x.a;\np.b=b+x.b;\nreturn p;\
}\n\n\nvoid main(void)\n{\nbin
A(10,20),B(30,40),C;\nC=A+B;\nC.print();\n}\n\n";
int e;
cout
<< "\n\n\nENTER YOUR
CHOICE:- ";
cin
>> e;
if (e == 1)
{
cout
<< "INPUT:-\n\na=10 b=30\n\na=20
b=40\n\
\n\nOUTPUT:-\n\n";
bin A(10, 20), B(30, 40), C;
C
= A + B;
C.print();
getch();
break;
}
else if (e == 0)
break;
}
else if (ch == 2)
{
cout
<< "#include<iostream.h>\nclass
mem{\nint a,b;\npublic:\n\
mem(){a=0;b=0;}\nmem(int m,int
n){a=m;b=n;}\nmem operator ++();\n\
void
print(){cout<<a<<endl<<b;}\n};\nmem mem::operator++()\n{\na++;\nb++;\n\
return *this;\n}\nvoid main(void)\n{\nmem
A(10,20),C;\n++C;\n++A;\n\
C.print();\nA.print();\n}\n";
int e;
cout
<< "\n\n\nENTER YOUR
CHOICE:- ";
cin
>> e;
if (e == 1)
{
cout
<< "INPUT:-\n\na=0 b=0\n\na=10
b=20\n\
\n\nOUTPUT:-\n\n";
mem A(10, 20), B(30, 40), C;
++C;
++A;
C.print();
A.print();
getch();
break;
}
else if (e == 0)
break;
}
else if (ch == 0)
break;
getch();
break;
}
}
}
break;
}
case 2:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "1> what is
operator overloading using friendfunction?\n\n\
2> why used friend function for
operator overloading?\n\n\3> genaral format\n\n\
4> show example\n\n\n\t\t\t<0for
main menu>\n\n\n\nENTER YOUR CHOICE:-
";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nOPERATOR
OVERLOADING USING FRIEND FUNCTION:-\n\n\
In C++ user defined data type can be used
the same way as the built in data type.suppose, in C++\
we
can add two varriables of user defined types with the same syntax that is\
applied to the basic type.That is to say,C++
provides the operators with a\
special
meaning for a data type.The process of giving such special meaning\
to
an operator is known as operator overloading.To overload an operator a \
special function is needed which is called
operator function.If we use a\
friend function as this operator function then
it is called operator overloading\
with friend function.For using this we have to
pass all the operand as parameter.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout << "\n\n\nIf we want to
add a user defined data\
type and a built in data type using operator
overloading with member function\
then we must have to use the user defined data
type as an left operand.But \
for the similar case, if we use operator
overloading with friend function\
then there is no such restriction to use
operand.It is very easy and comfortable\
to
use such case.And that's why friend function is used as operator
function.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\nGENARAL FORMAT OF
OPERATOR OVERLOADING WITH\
FRIEND
FUNCTION:-\n\n\nDECLARATION:-\n\n\nfriend return_type operator\
overloadable_operator(parameter_list);\n\n\nDEFINATION:-\n\n\n\
return_type operator
overloadable_operator(parameter_list)\n{\n\n\\body\n\n}\n";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\n\n\n---------EXAMPLE
ZONE-----------\n\n\n\n\
1. binary operator over loading using
member function\n\n2. unary operator \
overloading using member
function\n\n\n\n\t\t\tENTER YOUR CHOICE:-
";
int ch;
cin
>> ch;
if (ch == 1)
{
cout
<< "#include<iostream.h>\nclass
frnd{\nint a,b;\npublic:\nfrnd(){a=0;b=0;}\n\
frnd(int m,int n){a=m;b=n;}\nfriend frnd
operator +(frnd,frnd);\nvoid print()\
{cout<<a<<endl<<b;}\n};\n\nfrnd
operator+(frnd x,frnd y)\n{\nfrnd p;\n\
p.a=x.a+y.a;\np.b=x.b+y.b;\nreturn
p;\n}\n\n\nvoid main(void)\n{\n\
frnd
A(10,20),B(30,40),C;\nC=A+B;\nC.print();\n}\n";
int e;
cout
<< "\n\n\nENTER YOUR
CHOICE:- ";
cin
>> e;
if (e == 1)
{
cout
<< "INPUT:-\n\na=10 b=30\n\na=20
b=40\n\
\n\nOUTPUT:-\n\n";
frnd A(10, 20), B(30, 40), C;
C
= A + B;
C.print();
getch();
break;
}
else if (e == 0)
break;
}
else if (ch == 2)
{
cout
<< "#include<iostream.h>\nclass
fru{\nint a,b;\npublic:\
\nfru(){a=0;b=0;}\nfru(int m,int
n){a=m;b=n;}\nfriend void operator ++(fru &);\n\
void
print(){cout<<a<<endl<<b<<endl;}\n};\n\nvoid
operator++(fru &x)\n{\nx.a++;\n\
x.b++;\n}\nvoid main(void)\n{\nfru
A(10,20),B(30,40),C;\n++C;\n++A;\nC.print();\n\
A.print();\n}\n";
int e;
cout
<< "\n\n\nENTER YOUR
CHOICE:- ";
cin
>> e;
if (e == 1)
{
cout
<< "INPUT:-\n\na=0 b=0\n\na=10
b=20\n\
\n\nOUTPUT:-\n\n";
fru A(10, 20), B(30, 40), C;
++C;
++A;
C.print();
A.print();
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
else if (ch == 0)
break;
getch();
break;
}
}
}
}
}
}
}
//************** TYPE CONVERSION(Manual
type conversion) *********
class con_md {
int m, d;
public:
con_md()
{}
con_md(int x) { m = x / 30; d = x % 30; }
con_md(int a, int b) { m = a; d = b; }
int get_m() { return m; }
int get_d() { return d; }
void print() { cout << "month=" << m << "\tday=" << d; }
};
class con_d {
int day;
public:
con_d()
{}
con_d(con_md p) { day = p.get_m() * 30 + p.get_d(); }
void pr_d() { cout << "\n\n\nday=" << day; }
};
class con_md1 {
int m, d;
public:
con_md1()
{}
void put(int a, int b) { m = a; d = b; }
con_md1(int a, int b) { m = a; d = b; }
operator int() { return m * 30 + d; }
void print() { cout << "\nmonth=" << m << " day=" << d; }
};
class con_d1 {
int day;
public:
con_d1()
{}
con_d1(int a) { day = a; }
int get() { return day; }
operator con_md1()
{
con_md1 temp;
int m = day / 30;
int d = day % 30;
temp.put(m,
d);
return temp;
}
void pr_d() { cout << "\nday=" << day; }
};
void type_man()
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\t------------TYPE
CONVERSION(Manual type conversion)------------";
cout
<< "\n\n\n1) What is
manual type conversion?\n\n2) Why used manual type \
conversion?\n\n3)how many process of
manual type conversion?\n\n\
4) What is the jeneral format of manual
type conversion?\n\n5) Show example.\n\n\n";
cout
<< "\n\t\t\t\t\t\t<<
0 for main menue>>";
cout
<< "\n\n\nENTER YOUR
CHOICE: ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nTo convert from
one data type to another data type to another\
data type is known as type conversion.In
C++,when different built in data type\
of
varriables are mixed in an expression then, automatically type conversion\
rules(auto cast) is followed.But if we use the
combination of user defined data\
type and built in data type in an expression
then we have to convert data\
manually.The process of this conversion is
known as manual type conversion.In\
manual type conversion we have to design the
conversion routines ourselves.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "When we use the
combination of basic data type and user defined\
data type in an expression to convert data
type, we use manual type conversion.\
In
the following three times we have to use the manual type conversion:-\n\n\
A)
Basic type to user defined data type.\n\nB) User defined data type to basic\
data type.\n\nC) User defined data type to
another user defined data type.\n";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\nThere are two way
for manual type conversion.As follows:-\n\n\
1)Using constructor function:-\n Function defination(conversion) is
defined\
within destination class.\n\n\n2) Using
operator function or conversion\
function:-\n Function defination(conversion) is defined
within source class.\
Moreover operator function have to stisfy the
following condition:\n\na) It must\
be a class member.\n\nb) It must not
specify any return type.\n\nc) It must\
not any argument.";
getch();
break;
}
case 4:
{
cout
<< "\n\n\nGENERAL FORMAT
OF MANUAL TYPE CONVERSION:-\n\n1)USING\
CONSTRUCTOR
FUNCTION:-\n\n\nclass_name(parameter_list){
\\conversion; }\n\n\
\n\n2) USING OPERATOR
FUNCTION:-\n\n\noperator type_name()\n{\n\nconversion\n\n}\
\n\n
";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 5:
{
system("cls");
int e;
cout
<< "\t\t\t--------:EXAMPLE
ZONE:----------\n\n\n\n1) using constructor\
function.\n\n2)using operator
function\n\n\n\t\t\t<<0 for quit>>\
\n\n\n\nENTER YOUR CHOICE FOR EXAMPLE:- ";
cin
>> e;
switch (e)
{
case 1:
{
system("cls");
cout
<< "#include<iostream.h>\nclass
con_md{\nint m,d;\npublic:\ncon_md(){}\
\ncon_md(int
x){m=x/30;d=x%30;}\ncon_md(int a,int b){m=a;d=b;}\
\nint get_m(){return m;}\nint get_d(){return
d;}\
void
print(){cout<<month=<<m<<\nday=<<d;}\n};\nclass
con_d{\nint day;\npublic:\
\ncon_d(){}\ncon_d(con_md
p){day=p.get_m()*30+p.get_d();}\
void
pr_d(){cout<<\nday=<<day;}\n};\nvoid main(void)\n{\ncon_md
A,B(3,10);\ncon_d X;\
\nA=100\nA.print();\nX=B;\nX.pr_d();\n}\n\n\n\t\t\t<1
for run 0 for quit>";
cout
<< "\n\nENTER YOUR
CHOICE:- ";
int e;
cin
>> e;
if (e == 1)
{
con_md A, B(2, 20);
con_d X;
A
= 100;
cout
<< "\n\nINPUT:-\n\nday=100:\n\nmonth=2 day=20\n\nOUTPUT:-\n\n";
A.print();
X
= B;
X.pr_d();
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
case 2:
{
system("cls");
cout
<< "
#include<iostream.h>\nclass con_md{\n\
int m,d;\npublic:\ncon_md(){}\nvoid
put(int a,int b){m=a;d=b;}\n\
con_md(int a,int b){m=a;d=b;}\noperator
int(){return m*30+d;}\n\
void
print(){cout<<\n\nmonth=<<m<<\nday=<<d;}\n};\nclass
con_d{\nint day;\n\
public:\ncon_d(){}\ncon_d(int
a){day=a;}\nint get(){return day;}\noperator con_md()\
\n{\ncon_md temp;\nint m=day/30;\nint
d=day%30;\ntemp.put(m,d);\nreturn temp;\n\
}\nvoid
pr_d(){cout<<\nday=<<day;}\n};\nvoid main(void)\n{\nint a;\n\
con_md A(3,10),B(3,10);\ncon_d
X(100);\na=A;\ncout<<day=<<a;\nB=X;\nB.print();\
\n}\n\t\t\t<1 for run, 0 for
back>\nENTER YOUR CHOICE:- ";
int e;
cin
>> e;
if (e == 1)
{
int a;
con_md1 A(3, 10), B;
con_d1 X(100);
a
= A;
cout
<< "\nINPUT:-\nmonth=3 day=10\nday=100\n\nOUTPUT:-\n";
cout
<< "day=" << a;
B
= X;
B.print();
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
}
}
}
}
}
//************************ REFERENCES
***************************
void new_val(int &x)
{
x = 100;
}
void refernce()
{
int m = 1;
for (; !m == 0;)
{
system("cls");
cout
<< "------------->REFERENCES<-----------\n\n\n";
cout
<< "1. As parameter\n\n2.
As return value\n\n3. As independent reference\
\n\n\n\t\t\t<0 for main
menue>\n\n\n\n\tENTER YOUR CHOICE:-
";
cin
>> m;
switch (m)
{
case 1:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\n\n----------------REFERENCE
AS FUNCTION PARAMETER-\
-----------------\n\n\n1> what is
reference as parameter?\n\n\2> why used\
reference as parameter?\n\n3> What is the
genaral format of reference as parameter\
\n\n4> show
example\n\n\n\t\t\t<<0for back>>\n\n\n\nENTER YOUR CHOICE:- ";
cin
>> c;
switch (c)
{
case 1:
{
cout
<< "\n\n\nREFURENCE AS
PARAMETER:-\n\n Reference\
varriable is an implicit pointer which
provides an alias(alternative name)\
for a previously defined varrable.In C++,
actually reference permits us to\
use same memmory address by using different
name.we can use this reference\
as
function parameter and then it is called reference as function parameter.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 2:
{
cout
<< "\n\n\nThere are two
ways to perform call by\
reference.one is using explicit pointer and
another is using reference parameter.\
Using reference parameter is very easy and
comfortable than using explicit\
pointer.so to perform call by reference very
easily, reference parameter is\
used.";
cout
<< "\n\n\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
case 3:
{
cout
<< "\n\nGENARAL FORMAT OF
RRFERENCE PARAMETER:-\n\n\
return_type function_name(data_type
&varriable_name,.....)\n{\n\n\\body;\n\n}\n\
\n\nFUNCTION
CALLING:-\n\nfunction_name(parameter_list);";
getch();
break;
}
case 4:
{
system("cls");
cout
<< "\n\n---------EXAMPLE
ZONE-----------\n\n\n\n";
cout
<< "#include<iostream.h>\nvoid
new_val(int &x)\n{\n\
x=100;\n}\n\nvoid main(void)\n{\nint
a=50;\ncout<<befor function calling a=\
<<a;\nnew_val(a);\ncout<<after
function calling(using reference) change value\
,
a=<<a;\n}\n\n\n\t\t\t<1 for run o for back>\n\n\nENTER YOUR
CHOICE:- ";
int e;
cin
>> e;
if (e == 1)
{
int a = 50;
cout
<< "\n\nINPUT:-\n\nbefore
function calling a=50\n\nafter function\
calling(using reference) change value ,
a=100\n\n\nOUTPUT:-\n\n";
cout
<< "befor function
calling a="
<< a;
new_val(a);
cout
<< "\nafter function
calling(using reference) change value , a=" << a;
cout
<< "\n\n\n\t\t\t->->->PRESS
ENTER FOR NEXT<-<-<-";
getch();
break;
}
else if (e == 0)
break;
getch();
break;
}
}
}
break;
}
case 2:
{
int c = 1;
for (; !c == 0;)
{
system("cls");
cout
<< "\n\n----------------REFERENCE
AS RETURN VALUE-\
-----------------\n\n\n1> what is
reference as return value?\n\n\2> why used \
reference as return value?\n\n3. What is
the general format of reference as return\
value?\n\n4> show example\n\n\n\t\t<0for
main menu>\n\n\n\nENTER YOUR CHOICE:-
";
cin
>> c;
switch (c)
Output:
Related Articles:
0 Questions:
Post a Comment