SlideShare ist ein Scribd-Unternehmen logo
1 von 77
Downloaden Sie, um offline zu lesen
C++ Programming
Updated on:
03 August 2015
First published on 3 July 2012
This is the 7th Revised edition
www.ecti.co.in
C++ Programming
DISCLAIMER
 The data in the tutorials is supposed to be one for
reference.
 We have made sure that maximum errors have been
rectified. Inspite of that, we (ECTI and the authors) take
no responsibility in any errors in the data.
 The programs given in the tutorials have been prepared
on, and for the IDE Microsoft Visual Studio 2013.
 To use the programs on any other IDE, some changes
might be required.
 The student must take note of that.
www.ecti.co.in
C++ Programming
Procedure-Oriented Programming
 The procedure oriented language deals with a sequence
of processes to be done such as reading, calculating and
printing.
 The program is divided into functions to achieve
these tasks.
 In procedure oriented languages the main attention is
given to how to achieve a particular task and very less
attention is given to the data which is used by the
functions.
 If the data is required to be accessed by many functions
then it is declared as global. Global declarations are
more vulnerable as data can be changed by all the
functions.
www.ecti.co.in
C++ Programming
Problems in the ‘C’ Language
 The data elements while programming in C are not
considered.
 Problem of analysing the UNIX Kernel with respect
to Distributed Systems.
 Lack of security for Networks.
 Data Categorisation not present.
www.ecti.co.in
C++ Programming
Object Oriented Programming
 More emphasis is given on data rather than procedure.
 Programs are divided into objects.
 Classes are designed such that they characterize the
objects.
 The data and the functions that can operate on the data
are tied together.
 Data is hidden and cannot be accessed by external
functions.
 New data and functions can be added whenever
required.
 Follows bottom-up Design approach.
www.ecti.co.in
C++ Programming
Introduction to C++
 C++ language was developed by Bjarne Strousstrup at
AT & T Bells Laboratories in early 1980’s.
 He thought of a language which can have object oriented
features as well as it can retain the simplicity of C
language.
 Initially the language was names as ‘C with classes’.
However, later in 1983 the name was changed to C++.
 C++ almost supports all the C functionalities with some
new functionalities like classes, inheritance, function
overloading, operator overloading. These features of
C++ enable creating abstract data types, inherit
properties from existing data types etc.
www.ecti.co.in
C++ Programming
First C++ Program
#include<iostream.h>
#include<conio.h>
void main()
{
cout << "Hello World!!!";
getch();
}
Output:
Hello World!!!
• #include<iostream.h>
instruction causes to add
iostream.h file to program
which contains the
declarations of the identifier
cout.
• cout (<<) is called as a Output
Operator which prints string to
the console.
Note: The header files should now
be added by the student.
Henceforth, no headers are
mentioned in the sample programs.
www.ecti.co.in
C++ Programming
Class
class class_name
{
private:
variables;
functions;
public:
variables;
functions;
};
• The body of a class contains
variables and functions.
• A class defines the structure
and behavior (data and code)
that will be shared by a set of
objects.
• The purpose of class is to
encapsulate complexity, there
are mechanisms for hiding the
complexity of the
implementation inside the
class.
• The words private and public
are called as access
specifiers. By default the
access specifier is private in
C++.
www.ecti.co.in
C++ Programming
Class Representation
Class : PERSON
DATA
name
address
……….
FUNCTIONS
getdata()
showdata()
……….
PERSON
getdata()
showdata()
………….
www.ecti.co.in
C++ Programming
Objects
class demo
{
int no1, no2, add;
public:
void getdata()
{
cout << "Enter 2 nos: " ;
cin >> no1 >> no2;
}
void sum()
{
add = no1 + no2;
}
void showdata()
{
cout << "Sum is: " << add;
}
};
void main()
{
demo obj;
obj.getdata();
obj.sum();
obj.showdata();
getch();
}
• Each object of a given class contains
the structure and behavior defined by
the class.
• Thus class is a logical
representation, where as object has
physical representation.
• The memory is always assigned to
object and not to a class.
www.ecti.co.in
C++ Programming
Member Functions
Defining Function inside Class
class demo
{
int no1, no2, add;
public:
//inline function
void getdata() //inside
class function
{
cout << "Enter 2 nos: "
;
cin >> no1 >> no2;
}
void showdata()
{
cout << "Sum is: " <<
add;
}
};
Defining Function outside Class
class demo
{
int no1, no2, add;
public:
void getdata(); //prototype
declaration
void showdata()
{
cout << "Sum is: " <<
add;
}
};
void demo :: getdata()
{
cout << "Enter 2 nos: " ;
cin >> no1 >> no2;
}
www.ecti.co.in
C++ Programming
 When you are defining a function outside a class you have to
incorporate membership ‘identity label’ in the header. The ‘identity
label’ tells the compiler which class the function belongs to.
return_type class_name :: function_name (arguments)
{
…………….;
…………….;
}
 Due to :: (scope resolution operator) the compiler understands the
function function_name is restricted to class_name.
 Due to membership label many classes can use same function
name.
 Member functions can access the private data of the class.
 Member function can call another member function without using dot
operator.
Defining Functions Outside Class
www.ecti.co.in
C++ Programming
Inline Functions
• When we call a function it
takes extra time to execute.
• To eliminate the cost of
calls to small functions
inline functions are used.
• An inline function is a
function which is
expanded in line when it
is invoked.
• The compiler replaces the
function call with the
corresponding function
code.
inline function_header
{
...............;
...............;
}
• The faster execution of
inline function diminishes
when the function grows in
size.
• Inline functions should be
between 1 to 2 lines.
www.ecti.co.in
C++ Programming
Passing Object as a Parameter to Function
• You can pass object as a
function argument.
• If you pass entire object to
function then it is called as
pass-by-value and if only you
pass addresses of object then
it is called as pass-by-
reference.
• obj1.calsum(obj2), in this
function call obj2 is passed by
value and hence the function
prototype will be as follows –
void calsum (class_name o).
This means if we change
variable values of o they will
not affect values in obj2.
• obj1.calsum(obj2), in this
function obj2 is passed by
reference and hence the
function prototype will be as
follows –
void calsum (class_name &o).
This means if we change
variable values of o it will affect
values in obj2.
• Object to Pointers-
obj1.calsum(obj2) will be
passed to function as follows –
void calsum(class_name *o).
This means o will point to the
memory of obj2.
www.ecti.co.in
C++ Programming
Returning Objects
class maths
{
int no1, sum;
public:
void getdata(int);
void showdata();
maths calsum(maths);
};
void maths :: getdata(int x)
{
no1 = x;
}
void maths :: showdata()
{
cout << "The sum is:" <<
sum;
}
maths maths :: calsum(maths o)
{
maths temp;
temp.sum = no1 + o.no1;
return temp;
}
void main()
{
maths obj, obj1, obj2;
obj.getdata(10);
obj1.getdata(20);
obj2 = obj1.calsum(obj);
obj2.showdata();
getch();
}
• Here obj1 is called as invoking object
and the default memory will be of obj1.
www.ecti.co.in
C++ Programming
Array of Objects
class student
{
int roll_no;
char name[50], address[50];
public:
void getdata();
void showdata();
};
void student :: getdata()
{
cout << "Enter roll no.: ";
cin >> roll_no;
cout << "Enter name: ";
gets(name);
cout << "Enter address: ";
gets(address);
}
void student :: showdata()
{
cout << "Roll no.: " << roll_no;
cout << "Name: " << name;
cout << "Address: " << address;
}
void main()
{
student s[3]; //array of objects
cout << "Enter data of 3
students: ";
for(int i=0; i<3; i++)
{
s[i].getdata();
}
cout << "The information is: ";
for(int i=0; i<3; i++)
{
s[i].showdata();
}
getch();
}
www.ecti.co.in
C++ Programming
Array of Objects to Functions
class student
{
int roll_no;
char name[50], address[50];
public:
void getdata();
void showdata(student [ ],
int);
};
void student :: getdata()
{
cout << "Enter roll no.: ";
cin >> roll_no;
cout << "Enter name: ";
gets(name);
cout << "Enter address: ";
gets(address);
}
void student :: showdata(student s[ ],int n)
{
for(int i=0;i<n;i++)
{
cout << "Roll no.: "<< s[i].roll_no;
cout << "Name: " << s[i].name;
cout << "Address: " << s[i].address;
}
}
void main()
{
student s[3], s1; //array of objects
cout << "Enter data of 3 students: ";
for(int i=0; i<3; i++)
{
s[i].getdata();
}
cout << "The information is: ";
s1.showdata(s,3);
getch();
}
www.ecti.co.in
C++ Programming
Array of Objects to Pointers
class student
{
int roll_no;
char name[50], address[50];
public:
void getdata();
void showdata(student *,
int);
};
void student :: getdata()
{
cout << "Enter roll no.: ";
cin >> roll_no;
cout << "Enter name: ";
gets(name);
cout << "Enter address: ";
gets(address);
}
void student :: showdata(student *s,
int n)
{
for(int i=0;i<n;i++,s++)
{
cout<<"Roll no.: "<<s->roll_no;
cout<<"Name: "<< s->name;
cout<<"Address: "<< s->address;
}
}
void main()
{
student s[3], s1; //array of objects
cout<<"Enter data of 3 students: ";
for(int i=0; i<3; i++)
{
s[i].getdata();
}
cout << "The information is: ";
s1.showdata(s,3);
getch();
}
www.ecti.co.in
C++ Programming
Function Overloading
• You can define more than two
functions having same name
as long as their parameters are
different.
• Function overloading is one of
the ways that C++ supports
polymorphism.
• The type and/or number of
arguments determine which
overloaded version is to be
called.
• C++ does not allow overloaded
functions with same
parameters but different return
types.
class maths
{
void sum()
{
……
}
int sum(int x, int y)
{
…….
}
void sum(int x)
{
…….
}
void sum(int x, float y)
{
……
}
};
void sum(int x, int y)
{
……
}
www.ecti.co.in
C++ Programming
Constructors
• In C++ you can initialize the
class variables at the time of
creation of objects using
constructors.
• Constructor has same
name as the class in which
it resides and syntactically
similar to a method.
• Constructors do not have
return type nor they are
void.
• The constructor is
automatically called
immediately after the object
is created.
class demo
{
int a, b;
public:
demo()
{
a = 10; b = 20;
}
void showdata()
{
cout << "A=" << a << "B=" << b;
}
};
void main()
{
demo obj1;
obj1.showdata();
getch();
}
Constructor will get automatically
called when the object obj1 is created
www.ecti.co.in
C++ Programming
Parameterized Constructors
• In the example seen
before variables of all the
objects created will get
initialized to 10 and 20. If
we want to initialize them
to different values you
have to use
parameterized
constructors.
• The constructors with
arguments is called as
parameterized
constructors.
class demo
{
int a, b;
public:
demo(int x, int y);
//parameterized
…………….; constructor
…………….;
};
demo :: demo (int x, int y)
{
a = x; b = y;
}
• You can call the parameterized
constructor implicitly or explicitly
• Implicit call: demo obj(10, 20);
• Explicit call: demo obj = demo(10,20);
www.ecti.co.in
C++ Programming
Constructor Overloading
class maths
{
int x, y;
public:
maths()
{ x = 0; y = 0}
maths(int a, int b)
{ x = a; y = b;}
maths(maths &o)
{ x = o.x, y = o.y}
};
• In the above class we have overloaded
three constructors.
• maths obj declaration will invoke first
constructor where x and y will be
initialized to 0.
• maths obj1(100, 200) will invoke
second constructor where x and y will
be initialized to 100 & 200 respectively.
• maths obj2(obj1) will invoke third
constructor and will copy the values of
obj1 to obj2. Hence it is called as copy
constructor.
• Some other examples of copy
constructor –
• maths obj2 = obj1 will create a new
object obj2 and same time will initialize
the values to that of obj1.
• obj2 = obj1 will not invoke copy
constructor but due to = operator
overloaded it will initialize the values
of obj2 to obj1 member by member.
• The parameter to a constructor can be
any type except the class it belongs to.
• Hence maths(maths o) will not work
but maths(maths &o) will work
because we have passed the
reference of it’s own class.
www.ecti.co.in
C++ Programming
Destructor
• Destructor is used to
destroy the objects
created by constructors.
• Same as constructor
destructor name is also
same as that of class
name preceded by tilde
(~) character.
• Destructor does not take
any argument nor returns
any value.
• Destructor is
automatically invoked by
the compiler on exit of a
program or a block of
code in which the objects
are declared.
• Destructor releases the
memory for further use.
e.g. ~student () {
cout<<“nIn Destructor”;
}
Destructor for class student.
www.ecti.co.in
C++ Programming
this Pointer
 This pointer is used to represent an object that
invokes a member function.
 This pointer points to the object on which a
function is called e.g. obj.sum() will set this
pointer to the address of object obj.
www.ecti.co.in
C++ Programming
Program with ambiguity issue
#include<iostream.h>
#include<conio.h>
class maths
{
int a, b;
maths(int a, int b)
{
a=a; b=b; //both a & b
are locals
}
void display()
{
cout << a << ", " <<
b;
}
};
void main()
{
maths obj1(10, 20);
clrscr();
obj1.display();
getch();
}
• Here we are expecting the output
would be 10, 20. But the output would
be some garbage values. Because a
and b are the local variables. Hence
the statement a = a and b = b assigns
the values of local variables a and b to
itself.
www.ecti.co.in
C++ Programming
Use of this keyword
#include<iostream.h>
#include<conio.h>
class maths
{
int a, b;
maths(int a, int b)
{
this->a = a;
this->b = b;
}
void display()
{
cout << a << ", "
<< b;
}
};
int main()
{
maths obj1(10, 20);
clrscr();
obj1.display();
getch();
return 0;
}
Output : -
10 , 20
www.ecti.co.in
C++ Programming
new Keyword (Dynamic Memory Allocation)
 Allocating memory to the objects at the time of
their construction is called as Dynamic Memory
Allocation. The memory is allocated with the
help of new keyword.
 Dynamic memory allocation enables
programmer to allocate right amount of memory
when the objects are not of the same size.
www.ecti.co.in
C++ Programming
Use of new keyword
#include<iostream.h>
#include<string.h>
class String
{
char *name;
int length;
public:
String()
{
length = 0;
name = new char [length
+ 1];
}
String(char *s)
{
length = strlen(s);
name = new char [length
+ 1];
strcpy(name, s);
}
void display()
{
cout << name << "n";
}
void join (String &, String
&);
};
void String :: join (String &a,
String &b)
{
length = strlen(a.name) +
strlen(b.name);
delete name;
name = new char [length + 1];
strcpy(name, a.name);
strcat(name, b.name);
}
continued on next slide….
www.ecti.co.in
C++ Programming
Use of new keyword
void main()
{
char *first = "Parag ";
String name1(first),
name2("Sarang "),
name3("Pooja "), s1, s2;
s1.join(name1, name2);
s2.join(s1, name3);
name1.display();
name2.display();
name3.display();
s1.display();
s2.display();
getch();
}
The output of the program is –
Parag
Sarang
Pooja
ParagSarang
ParagSarangPooja
www.ecti.co.in
C++ Programming
Static Data Members
• We can declare any data
member as Static.
• Static data member is
initialized to zero when the
first object of the class is
created. No other
initialization is permitted.
• When we define a data
member as Static only one
copy of that member is
created for all the objects.
• It is visible only within the
class, but its lifetime is for
the entire program.
class stat
{
int no,
static int scount; //Static
member
Variable
public:
void getdata(int x)
{
no= x;
scount++;
}
void getcount()
{
cout<<"Count: "<<scount;
}
};
www.ecti.co.in
C++ Programming
Static Data Members
int stat :: scount;
void main()
{
stat a, b, c;
a.getcount();
b.getcount();
c.getcount();
a.getdata(100);
cout << "After
initialization: " << "n";
a.getcount();
cout << "After
initialization : " << "n";
b.getdata(200);
b.getcount();
c.getdata(300);
cout << "After
initialization : " << "n";
c.getcount();
getch();
}
The output of the program is –
Count: 0
Count: 0
Count: 0
After initialization:
Count: 1
After initialization:
Count: 2
After initialization:
Count: 3
www.ecti.co.in
C++ Programming
Static Member Functions
• We can declare static
member functions as we
define a data member as
static.
• A static function can
access other static
member functions or
static data members.
• Static functions are called
using the class name and
cannot be called using
the objects of the class.
class stat1
{
int no;
static int scount;
public:
void setno()
{
no = ++scount;
}
void showno()
{
cout << "nObject
Number:" << no;
}
continued on next slide….
www.ecti.co.in
C++ Programming
static void showcount()
{
cout<<"nCount: " <<
scount;
}
}; //end of class
int stat1 :: scount;
int main()
{
stat1 s1, s2;
s1.setno();
s2.setno();
stat :: showcount();
//calling static function
stat1 s3;
s3.setno();
stat :: showcount();
s1.showno();
s2.showno();
s3.showno();
getch();
} // end of main
Output:
Count: 2
Count: 3
Object Number: 1
Object Number: 2
Object Number: 3
www.ecti.co.in
C++ Programming
Friend Functions
• The private members of a
class cannot be accessed
from outside the class.
• There might be situation in
which the two classes
need to share a particular
function, we need to make
that function as a friend
function of both the class.
• So using friend function we
can access private data of
both the classes.
class ABC
{
………. ……….
public:
………. ……….
friend void name(ABC);
};
• You cannot call a friend
function using an object
of a class, it needs to be
called as normal function.
• You need to pass object
as an argument.
www.ecti.co.in
C++ Programming
class calMath
{
int a, b;
public:
void setdata(int x, int y)
{
a = x;
b = y;
}
friend float mean(calMath );
};
float mean (calMath m)
{
float x = (m.a + m.b) / 2.0;
return x;
}
int main()
{
calMath mobj;
mobj.setdata(22,19);
cout<<“nMean = “<<mean(mobj);
getch();
}
Output:
Mean = 20.5
www.ecti.co.in
C++ Programming
Friend Function to Two Classes
class PQR; //forward declaration
class LMN
{
int a;
public:
void setdata(int x)
{
a = x;
}
friend void max(LMN, PQR);
};
class PQR
{
int b;
public:
void setvalue(int y)
{
b = y;
}
friend void max(LMN, PQR);
};
void max(LMN l, PQR p)
{
if(l.a > p.b)
cout<<“Max No. = “<<l.a;
else
cout<<“Max No. = “<<p.b;
}
void main()
{
LMN lmn;
lmn.setdata(100);
PQR pqr;
pqr.setvalue(200);
max(lmn, pqr);
getch();
}
Output:
Max No. = 200
www.ecti.co.in
C++ Programming
Operator Overloading
• In C++ you can give
special meaning to the
operators. This process is
called as operator
overloading.
• In C++ all the operators
except the following
operators can be
overloaded –
– Class member operators (., .*)
– Scope resolution Operator (::)
– Size operator (sizeof)
– Conditional operators (?:)
return_type class_name ::
operator (op-argslist)
{
…………….;
…………….;
}
• Operator functions must be either
member functions (non-static) or
friend functions.
• Friend function will only have one
argument for unary operators and
two for binary operators.
• Member function has no
arguments for unary operators
and only one for binary operators.
www.ecti.co.in
C++ Programming
Overloading Unary Operators
class opunary
{
int no;
public:
void getdata(int );
void showdata();
void operator –();
};
void opunary :: getdata (int a)
{no = a; }
void opunary :: showdata()
{cout << no; }
void opunary :: operator – ()
{no = -no; }
void main()
{
opunary obj;
obj.getdata(10);
cout << “Value is: “;
obj.showdata();
-obj;
cout << “Value is: “;
obj.showdata();
getch();
}
Output : -
Value is: 10
Value is: -10
www.ecti.co.in
C++ Programming
Overloading Binary Operators
class complex
{
float real, img;
public:
complex(){ }
complex(float r, float i)
{
real = r; img = i;
}
complex operator +(complex);
void display();
};
complex complex :: operator
+(complex c)
{
complex temp;
temp.real = real + c.real;
temp.img = img + c.img;
return temp;
}
void complex :: display()
{
cout<<real<<"+”<<img<<“i”;
}
void main()
{
complex c1, c2, c3;
c1 = complex(3.2, 1.8);
c2 = complex(2.3, 5.3);
c3 = c1 + c2;
cout << "C1 = ";
c1.display();
cout << "C2 = ";
c2.display();
cout << "C3 = ";
c3.display(); getch();
}
www.ecti.co.in
C++ Programming
Inheritance
• Inheritance is a feature of
OOP which enables user
for reusability of the code.
• You can create new
classes which can use
properties of existing
classes using inheritance
and we can add new
features in derived class.
• In inheritance the old
class is called as base
class and the new class
is called as derived class.
• The derived class inherits
some or all features from
base class.
• One class can be derived
from many base classes
or many classes can be
derived from one base
class.
class derived : visibility_mode
base {
……………;
……………;
}
www.ecti.co.in
C++ Programming
Types of Inheritance
www.ecti.co.in
C++ Programming
Deriving a Class from Base Class
Default Private Derivation:
class derived : base
{
members of derived class;
}
Private Derivation:
class derived : private base
{
members of derived class;
}
Public Derivation:
class derived : public base
{
members of derived class;
}
• The : indicates derivation of
derived from base class. Private
or Public indicate the visibility of
the features of base class into
derived class.
• If privately derived, the public
members of base class become
private members of derived class
and if publically derived then
public members of base class
become public members of
derived class. In private derivation
we cannot access public member
functions of base class from
derived class object but in public
derivation we can access public
member functions of base class
from derived class object.
www.ecti.co.in
C++ Programming
Protected Access Specifier
• If we require the private data to
be visible in the derived class
then C++ provides the protected
visibility modifier.
• Protected member inherited in
public mode becomes protected
in derived class, hence it is
accessible to the member
function of derived class and
ready for further inheritance.
• Protected member inherited in
private mode becomes private in
derived class, hence it is
accessible to the member
functions of derived class but
not available for further
inheritance.
class ABC
{
private: //optional
……………; //visible to member
……………;//functions within the class
protected:
……………; //visible to member
functions
……………; //of its own and derived
class
public:
……………; //visible all the functions
……………; //in the program
};
www.ecti.co.in
C++ Programming
Function Overriding
• When we define a function with
same name and arguments in
both base class and derived class,
then the function is called as
overridden function and this
process is called as function
overriding.
• Function overriding enables
programmer to change the
behavior of any base class
functionality in the derived class.
• When you call the overridden
function by child object the child
version is called and when you
call the overridden using base
object the base version is called.
class A
{
……………;
public:
void getdata(int);
};
Class B : public A
{
……………;
public:
// overridden function
void getdata(int);
void showdata();
};
www.ecti.co.in
C++ Programming
Ambiguity Resolution in Inheritance
class ABC
{
public:
void display(void)
{
cout<<"I am in Class
ABC";
}
};
class XYZ
{
public:
void display(void)
{
cout<<"I am in Class
XYZ";
}
};
class LMN : public ABC, public XYZ
{
public:
void show(void)
{
cout<<"I am in class LMN";
}
};
int main()
{
LMN o;
o.display(); //will give ambiguity error
o.ABC::display(); //display of ABC
called
o.XYZ::display(); //display of XYZ
called
p.show();
getch();
}
www.ecti.co.in
C++ Programming
Virtual Base Class
• In above inheritance, B and C
classes inherit features of A
and then as D is derived from
B and C, there is an
ambiguity error because the
compiler does not
understand how to pass
features of Class A to Class
D either using B class or C
Class.
• So to remove the ambiguity
you need to make the class B
and class C as virtual base
classes.
Class B : public virtual A
Class C : virtual public A
• When the class is made as
virtual base class, the compiler
takes necessary care to pass
only one copy of the
members in inherited class
regardless of many inheritance
paths exist between the virtual
base class and derived class.
www.ecti.co.in
C++ Programming
Virtual Base Class - Example
class student
{
protected:
int roll_number;
public:
void get_number(int a)
{
roll_number = a;
}
void put_number(void)
{
cout <<"Roll Number:
"<<roll_number << "n";
}
};
class test : public virtual student
{
protected:
float part1, part2;
public:
void get_marks(float x, float y)
{
part1 = x;
part2 = y;
}
void put_marks(void)
{
cout<<"Markts Obtained:
"<<"n"<<"Part1 = "<<part1<<
"n"<<"Part2 = "<<part2<< "n";
}
};
continued on next slide….
www.ecti.co.in
C++ Programming
class sports : virtual public
student
{
protected:
float score;
public:
void get_score(float s)
{ score = s; }
void put_score(void)
{
cout << "Sports Marks = "
<< score << "n";
}
};
class result : public test,
public sports
{
float total;
public:
void display(void);
};
void result :: display(void)
{
total = part1+part2+score;
put_number();
put_marks();
put_score();
cout<<"Total Score: "<<total
<<"n";
}
void main()
{
result student1;
student1.get_number(10);
student1.get_marks(75.25,82.90);
student1.get_score(92.80);
student1.display();
getch();
}
www.ecti.co.in
C++ Programming
Behaviour of Constructors in Derived Class
• When we create the object
of derived class the default
constructor of base class
gets called and then default
constructor of derived class
gets called.
• When you create object of
derived class with
parameters, still default
constructor of base class
gets called and
parameterized constructor
of child class gets called.
• If base class contains
constructor more than
one argument, then it is
compulsory for the
derived class to have a
constructor and pass the
arguments to base class
constructor.
www.ecti.co.in
C++ Programming
Constructors in Single Inheritance (Example)
class base
{
int a;
public:
base()
{
cout << "I am into base's
default constructor";
}
base(int x)
{
cout << "I am into base's
parameterized constructor";
a = x;
}
void show_a()
{
cout << "nThe value of a
is: " << a;
}
};
class derived : public base
{
int b;
public:
derived()
{
cout << "nI am in child's
default constructor";
}
derived(int y, int z):base(y)
{
cout << "nI am in child's
parameterized constructor";
b = z;
}
void show_b()
{
cout << "nThe value of b
is: " << b;
}
};
continued on next slide….
www.ecti.co.in
C++ Programming
void main()
{
derived d;
derived d1(10,20);
d.show_b();
d.show_a();
getch();
}
Output:
I am into base's default constructor
I am into child's default constructor
I am into base's parameterized
constructor
I am into child's parameterized
constructor
The value of b is: 20
The value of a is: 10
www.ecti.co.in
C++ Programming
Constructors in Multilevel Inheritance (Example)
class A
{
int a;
public:
A()
{
cout << "Into Class A's
default constructor";
}
A(int x)
{
a = x;
cout << "nInto Class A's
parameterized constructor";
cout << "nA = " << a;
}
};
class B:public A
{
int b;
public:
B()
{
cout << "nInto Class B's
default constructor";
}
B(int l, int m):A(l)
{
b = m;
cout << "nIn Class B's
parameterized constructor";
cout << "nB = " << b;
}
};
continued on next slide….
www.ecti.co.in
C++ Programming
class C:public B
{
int c;
public:
C()
{
cout << "nInto Class C's
default constructor";
}
C(int p,int q, int r):B(p,q)
{
c = r;
cout << "nInto Class C's
parameterized constructor";
cout << "nC = " << c;
}
};
void main()
{
C c;
C c1(10,20,30);
getch();
}
Output:
Into Class A's default constructor
Into Class B's default constructor
Into Class C's default constructor
Into Class A's parameterized constructor
A = 10
Into Class B's parameterized constructor
B = 20
Into Class C's parameterized constructor
C = 30
www.ecti.co.in
C++ Programming
Abstract Class
• Abstract class is designed
to act as base class for
other classes.
• It is a design concept in a
program development and
provides a base upon which
other classes may be built.
• You cannot create object of
an Abstract class.
• Abstract class is used only
to derive other child
classes.
• A class with a Pure Virtual
Function is called as an
Abstract Class
Class A
{
int a,b;
public:
//pure virtual func
void add()=0;
void show();
void get();
}
www.ecti.co.in
C++ Programming
ios
streambuf
ostreamistream
iostream
iostream_withassign ostream_withassignistream_withassign
input output
pointer
Console I/O Operations
www.ecti.co.in
C++ Programming
put() and get() Functions
• get() function is defined
in the istream class in
order to handle single
character inputs.
• It can be implemented as:
– cin.get(ch);
The above method calls the get()
function with ch as a parameter.
– ch=cin.get();
The above method calls the get()
function without a parameter
returning the value to the variable
ch.
• put() function is defined
in the class ostream in
order to handle single
character outputs.
• It can be implemented as:
– cout.put(‘x’);
The above method calls the put
function with a character value ‘x’
as a parameter.
– cout.put(ch);
The above method calls the put()
function with a variable ch.
www.ecti.co.in
C++ Programming
get() and put() function
void main()
{
char ch;
cout<<“Enter character: “;
cin.get(ch);
cout<<“You entered: “<<ch;
getch();
}
Output:
Enter character: h
You entered: h
void main()
{
char ch;
cout<<“Enter character: “;
cin.get(ch);
cout<<“You entered: “;
cout.put(ch);
getch();
}
Output:
Enter character: h
You entered: h
www.ecti.co.in
C++ Programming
getline() and write() Functions
• getline() is a function
defined to handle
strings in the istream
class.
• It takes two
parameters:
– A string variable that
takes the string
– Number of characters
to be accepted as a
string (line).
• write() is a similar
function used to write
strings onto files. It is
defined in the
ostream class.
• It takes two
parameters:
– A string that is to be
displayed on the
console
– Number of characters
to be written.
www.ecti.co.in
C++ Programming
getline() and write() Functions
void main()
{
char ch[20];
cout<<“Enter a string: “;
cin.getline(ch,19);
cout<<“You entered: “<<ch;
getch();
}
Output:
Enter a string: Envision
You entered: Envision
void main()
{
char ch[20];
cout<<“Enter a string: “;
cin.getline(ch,19);
cout<<“You entered: “;
cout.write(ch,19);
getch();
}
Output:
Enter a string: Envision
You entered: Envision
www.ecti.co.in
C++ Programming
Formatted Console I/O Operators
• Unformatted console
operators are used in
order to manipulate or
interpret the input and
output.
• On the other hand,
formatted operators are
used in order to give
formatting to the output
of your program.
• These operators are
used just to give a
formatting to the input /
output. These cannot
be used as tools to I/O.
www.ecti.co.in
C++ Programming
ios Format Functions
Function Description
width() To specify the required field size for
displaying an output value
precision() To specify the number of digits to be
displayed after the decimal point of a
float value
fill() To specify a character that is used to
fill the unused portion of a field
setf() To specify format flags that can control
the form of output display
unsetf() To clear the flags specified
www.ecti.co.in
C++ Programming
Defining Field Width: width()
• We can use the
width() function to
define the width of a
field necessary for the
output of an item.
Since it is defined
within the class
ostream, we call it as:
cout.width(w);
• e.g.:
cout.width(5);
cout << 543 << 12 << “n”;
cout.width(5);
cout << 543;
cout.width(5);
cout << 12;
345 21
345 21
www.ecti.co.in
C++ Programming
Setting precision: precision()
• By default, the
floating point values
are printed with six
digits after the
decimal. However, we
can specify the
number of digits to be
displayed after the
decimal through
precision();
• e.g.:
cout.precision(3);
cout << 3.14159;
cout << 2.50062;
• Output:
3.142
2.5 (no trailing zeros)
www.ecti.co.in
C++ Programming
Filling & Padding: fill()
• We have been
printing values using
larger spaces than
required. These are
generally blank
spaces. With the help
of fill(), we can fill the
unused positions with
the desired character.
• e.g.:
cout.fill(‘*’);
cout.width(5);
cout << 23;
• Output:
* * 32*
www.ecti.co.in
C++ Programming
Formatting flags, bit-fields & setf()
• When we use width(),
precision() and fill()
functions, the data is put
by default in right
justification.
• We can manage this
using this formatting.
• The setf() is a member
function of the ios class
and can set various flags
in order to give proper
formatting.
cout.setf(arg1, arg2);
• Here, arg1 is one of the
formatting flags defined in
the class ios. It specifies
the format action required
for the output.
• Also present is, arg2. This
specifies which group does
the formatting flag belong
to. It is called as the
bit-field
www.ecti.co.in
C++ Programming
Format Required Flag (arg1) Bit-field (arg2)
Left-justification ios::left ios::adjustfield
Right-justification ios::right ios::adjustfield
padding after sign or
base indicator
ios::internal ios::adjustfield
Scientific notation ios::scientific ios::floatfield
fixed point notation ios::fixed ios::floatfield
decimal base ios::doc ios::basefield
octal base ios::oct ios::basefield
hexadecimal base ios::hex ios::basefield
…continued
www.ecti.co.in
C++ Programming
Working on Files
ios
streambuf ostreamistream
iostream
iostream_withassign ostream_withassignistream_withassign
fstream base
filebuf
iostreamfilefstreamfile
www.ecti.co.in
C++ Programming
Opening and Closing a File
• There are input and output
stream classes for files similar
to those for consoles.
• These are ifstream and
ofstream respectively.
• To open a file in WRITE
mode, we need to an object of
the output stream.
• Thus,
ofstream outfile(“results.txt”);
is the desired statement.
• Similarly, to open a file in
READ mode, the syntax
is,
ifstream infile(“results.txt”);
• A file can also be opened
through a function,
infile.open(“results.txt”);
• To close the file, we
simply call the close
function through the
object:
infile.close();
www.ecti.co.in
C++ Programming
Writing and Reading from a File
• Writing to a file is
done through the
overloaded operator
(<<).
• e.g.:
ofstream outf;
outf.open(“results.txt”);
outf << “Hello World!”;
• Similarly, reading is
done through the
overloaded operator
(>>).
• e.g.:
ifstream inf;
char name[30];
inf.open(“results.txt”);
inf >> name;
www.ecti.co.in
C++ Programming
The getline() Function and EOF character
• File contents can also be
read through a member
function getline().
• It takes 2 parameters:
– a string
– number of characters
ifstream inf;
char name[30];
inf.open(“results.txt”);
inf.getline(name,20);
getch();
• When reading content
from the file, we need to
make sure that the
End-of-File has not been
encountered.
• To make sure we get this,
a member function eof() is
called to check if the end
of file is encountered.
• The eof() returns a 0 if
false.
ifstream inf(“results.txt”);
if(inf.eof()) { exit(0); }
www.ecti.co.in
C++ Programming
Exception Handling
• The problems which
are not syntax errors
nor logical errors are
called as Exceptions.
• When these are
encountered, the
program terminates
unexpectedly.
• To avoid this, we use
exception handling.
• Exception
occurred
• Exception thrown
• Exception caught
• Exception
processed
Try Block
Catch Block
www.ecti.co.in
C++ Programming
Exception Handling
 try block throwing an exception
 Invoking function throwing an exception
 Multiple catch statements
 catch-all
 Rethrowing an exception
www.ecti.co.in
C++ Programming
Templates
 Templates is a feature in C++ which enables us to define
generic classes and functions and thus provides support
for generic programming.
 A template can be used to create a family of classes or
functions.
 We can template for both:
 Function Template
 Class Template
www.ecti.co.in
C++ Programming
Function Templates
template <class T>
void swap(T &x, T &y)
{
T temp=x;
x=y;
y=temp;
}
• The definition above
essentially declares a set of
overloaded functions, one for
each data type. We can invoke
this swap function like an
ordinary function
e.g.:
template <class T>
void swap(T &x, T &y)
{
T temp=x;
x=y;
y=temp;
}
void func(int m, int n,
char ch, char pq)
{
swap(m,n);
swap(ch,pq);
}
www.ecti.co.in
C++ Programming
Class Templates
template <class T>
class vector
{
T vect;
int size;
public:
vector() { }
vector(T a)
{ vect=a; }
};
• The class above is defined
as a generic class and can
take any data type
specified.
• In order to define an
object of the said
class with the variable
‘vect’ as an integer,
we write,
vector <int> v1;
• Similarly, for a
character, we say,
vector <char> v2;
www.ecti.co.in
C++ Programming
END OF BASICS IN C++
 Thus, the basics of C++ programming ends here.
 We hope you are satisfied with the theory provided.
 You may get back to us for advance C++ concepts like
Standard Template Libraries (STLs) and more.
 Feel free to share, distribute or use it in any form you
wish to. IT IS FOR YOU. 
www.ecti.co.in
C++ Programming
For advance C++ programming course or for any doubts in
this tutorial, please contact us on any of the following
details:
Call us on: 02065000419 / 02065111419
E-mail us at: prog@ecti.co.in
Web URL: www.ecti.co.in
For any suggestions of complaints regarding the theory or
programs in the tutorial, write us at:
complaints@ecti.co.in
END OF BASICS IN C++

Weitere ähnliche Inhalte

Was ist angesagt?

Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming LanguageAhmad Idrees
 
Introduction to C++
Introduction to C++ Introduction to C++
Introduction to C++ Bharat Kalia
 
01 c++ Intro.ppt
01 c++ Intro.ppt01 c++ Intro.ppt
01 c++ Intro.pptTareq Hasan
 
C++ Programming Course
C++ Programming CourseC++ Programming Course
C++ Programming CourseDennis Chang
 
C++ PROGRAMMING BASICS
C++ PROGRAMMING BASICSC++ PROGRAMMING BASICS
C++ PROGRAMMING BASICSAami Kakakhel
 
basics of C and c++ by eteaching
basics of C and c++ by eteachingbasics of C and c++ by eteaching
basics of C and c++ by eteachingeteaching
 
(2) cpp imperative programming
(2) cpp imperative programming(2) cpp imperative programming
(2) cpp imperative programmingNico Ludwig
 
Keywords, identifiers ,datatypes in C++
Keywords, identifiers ,datatypes in C++Keywords, identifiers ,datatypes in C++
Keywords, identifiers ,datatypes in C++Ankur Pandey
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Languagesatvirsandhu9
 
First draft programming c++
First draft programming c++First draft programming c++
First draft programming c++藝輝 王
 
Intro. to prog. c++
Intro. to prog. c++Intro. to prog. c++
Intro. to prog. c++KurdGul
 
45 Days C++ Programming Language Training in Ambala
45 Days C++ Programming Language Training in Ambala45 Days C++ Programming Language Training in Ambala
45 Days C++ Programming Language Training in Ambalajatin batra
 
OOP in C++
OOP in C++OOP in C++
OOP in C++ppd1961
 
Tokens expressionsin C++
Tokens expressionsin C++Tokens expressionsin C++
Tokens expressionsin C++HalaiHansaika
 

Was ist angesagt? (20)

Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming Language
 
C++ for beginners
C++ for beginnersC++ for beginners
C++ for beginners
 
Introduction to C++
Introduction to C++ Introduction to C++
Introduction to C++
 
01 c++ Intro.ppt
01 c++ Intro.ppt01 c++ Intro.ppt
01 c++ Intro.ppt
 
C++ Programming Course
C++ Programming CourseC++ Programming Course
C++ Programming Course
 
C++ Basics
C++ BasicsC++ Basics
C++ Basics
 
C++ PROGRAMMING BASICS
C++ PROGRAMMING BASICSC++ PROGRAMMING BASICS
C++ PROGRAMMING BASICS
 
basics of C and c++ by eteaching
basics of C and c++ by eteachingbasics of C and c++ by eteaching
basics of C and c++ by eteaching
 
(2) cpp imperative programming
(2) cpp imperative programming(2) cpp imperative programming
(2) cpp imperative programming
 
Keywords, identifiers ,datatypes in C++
Keywords, identifiers ,datatypes in C++Keywords, identifiers ,datatypes in C++
Keywords, identifiers ,datatypes in C++
 
C++ AND CATEGORIES OF SOFTWARE
C++ AND CATEGORIES OF SOFTWAREC++ AND CATEGORIES OF SOFTWARE
C++ AND CATEGORIES OF SOFTWARE
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
First draft programming c++
First draft programming c++First draft programming c++
First draft programming c++
 
Intro. to prog. c++
Intro. to prog. c++Intro. to prog. c++
Intro. to prog. c++
 
C programming notes
C programming notesC programming notes
C programming notes
 
45 Days C++ Programming Language Training in Ambala
45 Days C++ Programming Language Training in Ambala45 Days C++ Programming Language Training in Ambala
45 Days C++ Programming Language Training in Ambala
 
C++ How to program
C++ How to programC++ How to program
C++ How to program
 
OOP in C++
OOP in C++OOP in C++
OOP in C++
 
basics of c++
basics of c++basics of c++
basics of c++
 
Tokens expressionsin C++
Tokens expressionsin C++Tokens expressionsin C++
Tokens expressionsin C++
 

Andere mochten auch (20)

Object Lifetime In C C++
Object Lifetime In C C++Object Lifetime In C C++
Object Lifetime In C C++
 
Elements of programming
Elements of programmingElements of programming
Elements of programming
 
Chapter 2 basic element of programming
Chapter 2 basic element of programming Chapter 2 basic element of programming
Chapter 2 basic element of programming
 
User defined data type
User defined data typeUser defined data type
User defined data type
 
Data type
Data typeData type
Data type
 
Classes and objects
Classes and objectsClasses and objects
Classes and objects
 
Syntaxdirected
SyntaxdirectedSyntaxdirected
Syntaxdirected
 
C++ Language
C++ LanguageC++ Language
C++ Language
 
Ch2
Ch2Ch2
Ch2
 
Data types
Data typesData types
Data types
 
Programming In C++
Programming In C++ Programming In C++
Programming In C++
 
[OOP - Lec 19] Static Member Functions
[OOP - Lec 19] Static Member Functions[OOP - Lec 19] Static Member Functions
[OOP - Lec 19] Static Member Functions
 
Data and its types by adeel
Data and its types by adeelData and its types by adeel
Data and its types by adeel
 
functions of C++
functions of C++functions of C++
functions of C++
 
Data types
Data typesData types
Data types
 
Ch5a
Ch5aCh5a
Ch5a
 
Basic c++ programs
Basic c++ programsBasic c++ programs
Basic c++ programs
 
Oop c++class(final).ppt
Oop c++class(final).pptOop c++class(final).ppt
Oop c++class(final).ppt
 
Introduction to C Programming
Introduction to C ProgrammingIntroduction to C Programming
Introduction to C Programming
 
Concept Of C++ Data Types
Concept Of C++ Data TypesConcept Of C++ Data Types
Concept Of C++ Data Types
 

Ähnlich wie C++ Programming

Ähnlich wie C++ Programming (20)

Oop concept in c++ by MUhammed Thanveer Melayi
Oop concept in c++ by MUhammed Thanveer MelayiOop concept in c++ by MUhammed Thanveer Melayi
Oop concept in c++ by MUhammed Thanveer Melayi
 
Oops lecture 1
Oops lecture 1Oops lecture 1
Oops lecture 1
 
PRINCE PRESENTATION(1).pptx
PRINCE PRESENTATION(1).pptxPRINCE PRESENTATION(1).pptx
PRINCE PRESENTATION(1).pptx
 
SRAVANByCPP
SRAVANByCPPSRAVANByCPP
SRAVANByCPP
 
C++ Interview Question And Answer
C++ Interview Question And AnswerC++ Interview Question And Answer
C++ Interview Question And Answer
 
C++ questions And Answer
C++ questions And AnswerC++ questions And Answer
C++ questions And Answer
 
Object Oriented Technologies
Object Oriented TechnologiesObject Oriented Technologies
Object Oriented Technologies
 
C++ [ principles of object oriented programming ]
C++ [ principles of object oriented programming ]C++ [ principles of object oriented programming ]
C++ [ principles of object oriented programming ]
 
Principles of object oriented programing
Principles of object oriented programingPrinciples of object oriented programing
Principles of object oriented programing
 
Oops presentation
Oops presentationOops presentation
Oops presentation
 
1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answers1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answers
 
C++ programming
C++ programmingC++ programming
C++ programming
 
C++
C++C++
C++
 
Virtual Function and Polymorphism.ppt
Virtual Function and Polymorphism.pptVirtual Function and Polymorphism.ppt
Virtual Function and Polymorphism.ppt
 
OOC MODULE1.pptx
OOC MODULE1.pptxOOC MODULE1.pptx
OOC MODULE1.pptx
 
C++.pptx
C++.pptxC++.pptx
C++.pptx
 
C++ Overview PPT
C++ Overview PPTC++ Overview PPT
C++ Overview PPT
 
C++
C++C++
C++
 
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptxCONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
 
14 operator overloading
14 operator overloading14 operator overloading
14 operator overloading
 

Kürzlich hochgeladen

Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 

Kürzlich hochgeladen (20)

Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 

C++ Programming

  • 1. C++ Programming Updated on: 03 August 2015 First published on 3 July 2012 This is the 7th Revised edition
  • 2. www.ecti.co.in C++ Programming DISCLAIMER  The data in the tutorials is supposed to be one for reference.  We have made sure that maximum errors have been rectified. Inspite of that, we (ECTI and the authors) take no responsibility in any errors in the data.  The programs given in the tutorials have been prepared on, and for the IDE Microsoft Visual Studio 2013.  To use the programs on any other IDE, some changes might be required.  The student must take note of that.
  • 3. www.ecti.co.in C++ Programming Procedure-Oriented Programming  The procedure oriented language deals with a sequence of processes to be done such as reading, calculating and printing.  The program is divided into functions to achieve these tasks.  In procedure oriented languages the main attention is given to how to achieve a particular task and very less attention is given to the data which is used by the functions.  If the data is required to be accessed by many functions then it is declared as global. Global declarations are more vulnerable as data can be changed by all the functions.
  • 4. www.ecti.co.in C++ Programming Problems in the ‘C’ Language  The data elements while programming in C are not considered.  Problem of analysing the UNIX Kernel with respect to Distributed Systems.  Lack of security for Networks.  Data Categorisation not present.
  • 5. www.ecti.co.in C++ Programming Object Oriented Programming  More emphasis is given on data rather than procedure.  Programs are divided into objects.  Classes are designed such that they characterize the objects.  The data and the functions that can operate on the data are tied together.  Data is hidden and cannot be accessed by external functions.  New data and functions can be added whenever required.  Follows bottom-up Design approach.
  • 6. www.ecti.co.in C++ Programming Introduction to C++  C++ language was developed by Bjarne Strousstrup at AT & T Bells Laboratories in early 1980’s.  He thought of a language which can have object oriented features as well as it can retain the simplicity of C language.  Initially the language was names as ‘C with classes’. However, later in 1983 the name was changed to C++.  C++ almost supports all the C functionalities with some new functionalities like classes, inheritance, function overloading, operator overloading. These features of C++ enable creating abstract data types, inherit properties from existing data types etc.
  • 7. www.ecti.co.in C++ Programming First C++ Program #include<iostream.h> #include<conio.h> void main() { cout << "Hello World!!!"; getch(); } Output: Hello World!!! • #include<iostream.h> instruction causes to add iostream.h file to program which contains the declarations of the identifier cout. • cout (<<) is called as a Output Operator which prints string to the console. Note: The header files should now be added by the student. Henceforth, no headers are mentioned in the sample programs.
  • 8. www.ecti.co.in C++ Programming Class class class_name { private: variables; functions; public: variables; functions; }; • The body of a class contains variables and functions. • A class defines the structure and behavior (data and code) that will be shared by a set of objects. • The purpose of class is to encapsulate complexity, there are mechanisms for hiding the complexity of the implementation inside the class. • The words private and public are called as access specifiers. By default the access specifier is private in C++.
  • 9. www.ecti.co.in C++ Programming Class Representation Class : PERSON DATA name address ………. FUNCTIONS getdata() showdata() ………. PERSON getdata() showdata() ………….
  • 10. www.ecti.co.in C++ Programming Objects class demo { int no1, no2, add; public: void getdata() { cout << "Enter 2 nos: " ; cin >> no1 >> no2; } void sum() { add = no1 + no2; } void showdata() { cout << "Sum is: " << add; } }; void main() { demo obj; obj.getdata(); obj.sum(); obj.showdata(); getch(); } • Each object of a given class contains the structure and behavior defined by the class. • Thus class is a logical representation, where as object has physical representation. • The memory is always assigned to object and not to a class.
  • 11. www.ecti.co.in C++ Programming Member Functions Defining Function inside Class class demo { int no1, no2, add; public: //inline function void getdata() //inside class function { cout << "Enter 2 nos: " ; cin >> no1 >> no2; } void showdata() { cout << "Sum is: " << add; } }; Defining Function outside Class class demo { int no1, no2, add; public: void getdata(); //prototype declaration void showdata() { cout << "Sum is: " << add; } }; void demo :: getdata() { cout << "Enter 2 nos: " ; cin >> no1 >> no2; }
  • 12. www.ecti.co.in C++ Programming  When you are defining a function outside a class you have to incorporate membership ‘identity label’ in the header. The ‘identity label’ tells the compiler which class the function belongs to. return_type class_name :: function_name (arguments) { …………….; …………….; }  Due to :: (scope resolution operator) the compiler understands the function function_name is restricted to class_name.  Due to membership label many classes can use same function name.  Member functions can access the private data of the class.  Member function can call another member function without using dot operator. Defining Functions Outside Class
  • 13. www.ecti.co.in C++ Programming Inline Functions • When we call a function it takes extra time to execute. • To eliminate the cost of calls to small functions inline functions are used. • An inline function is a function which is expanded in line when it is invoked. • The compiler replaces the function call with the corresponding function code. inline function_header { ...............; ...............; } • The faster execution of inline function diminishes when the function grows in size. • Inline functions should be between 1 to 2 lines.
  • 14. www.ecti.co.in C++ Programming Passing Object as a Parameter to Function • You can pass object as a function argument. • If you pass entire object to function then it is called as pass-by-value and if only you pass addresses of object then it is called as pass-by- reference. • obj1.calsum(obj2), in this function call obj2 is passed by value and hence the function prototype will be as follows – void calsum (class_name o). This means if we change variable values of o they will not affect values in obj2. • obj1.calsum(obj2), in this function obj2 is passed by reference and hence the function prototype will be as follows – void calsum (class_name &o). This means if we change variable values of o it will affect values in obj2. • Object to Pointers- obj1.calsum(obj2) will be passed to function as follows – void calsum(class_name *o). This means o will point to the memory of obj2.
  • 15. www.ecti.co.in C++ Programming Returning Objects class maths { int no1, sum; public: void getdata(int); void showdata(); maths calsum(maths); }; void maths :: getdata(int x) { no1 = x; } void maths :: showdata() { cout << "The sum is:" << sum; } maths maths :: calsum(maths o) { maths temp; temp.sum = no1 + o.no1; return temp; } void main() { maths obj, obj1, obj2; obj.getdata(10); obj1.getdata(20); obj2 = obj1.calsum(obj); obj2.showdata(); getch(); } • Here obj1 is called as invoking object and the default memory will be of obj1.
  • 16. www.ecti.co.in C++ Programming Array of Objects class student { int roll_no; char name[50], address[50]; public: void getdata(); void showdata(); }; void student :: getdata() { cout << "Enter roll no.: "; cin >> roll_no; cout << "Enter name: "; gets(name); cout << "Enter address: "; gets(address); } void student :: showdata() { cout << "Roll no.: " << roll_no; cout << "Name: " << name; cout << "Address: " << address; } void main() { student s[3]; //array of objects cout << "Enter data of 3 students: "; for(int i=0; i<3; i++) { s[i].getdata(); } cout << "The information is: "; for(int i=0; i<3; i++) { s[i].showdata(); } getch(); }
  • 17. www.ecti.co.in C++ Programming Array of Objects to Functions class student { int roll_no; char name[50], address[50]; public: void getdata(); void showdata(student [ ], int); }; void student :: getdata() { cout << "Enter roll no.: "; cin >> roll_no; cout << "Enter name: "; gets(name); cout << "Enter address: "; gets(address); } void student :: showdata(student s[ ],int n) { for(int i=0;i<n;i++) { cout << "Roll no.: "<< s[i].roll_no; cout << "Name: " << s[i].name; cout << "Address: " << s[i].address; } } void main() { student s[3], s1; //array of objects cout << "Enter data of 3 students: "; for(int i=0; i<3; i++) { s[i].getdata(); } cout << "The information is: "; s1.showdata(s,3); getch(); }
  • 18. www.ecti.co.in C++ Programming Array of Objects to Pointers class student { int roll_no; char name[50], address[50]; public: void getdata(); void showdata(student *, int); }; void student :: getdata() { cout << "Enter roll no.: "; cin >> roll_no; cout << "Enter name: "; gets(name); cout << "Enter address: "; gets(address); } void student :: showdata(student *s, int n) { for(int i=0;i<n;i++,s++) { cout<<"Roll no.: "<<s->roll_no; cout<<"Name: "<< s->name; cout<<"Address: "<< s->address; } } void main() { student s[3], s1; //array of objects cout<<"Enter data of 3 students: "; for(int i=0; i<3; i++) { s[i].getdata(); } cout << "The information is: "; s1.showdata(s,3); getch(); }
  • 19. www.ecti.co.in C++ Programming Function Overloading • You can define more than two functions having same name as long as their parameters are different. • Function overloading is one of the ways that C++ supports polymorphism. • The type and/or number of arguments determine which overloaded version is to be called. • C++ does not allow overloaded functions with same parameters but different return types. class maths { void sum() { …… } int sum(int x, int y) { ……. } void sum(int x) { ……. } void sum(int x, float y) { …… } }; void sum(int x, int y) { …… }
  • 20. www.ecti.co.in C++ Programming Constructors • In C++ you can initialize the class variables at the time of creation of objects using constructors. • Constructor has same name as the class in which it resides and syntactically similar to a method. • Constructors do not have return type nor they are void. • The constructor is automatically called immediately after the object is created. class demo { int a, b; public: demo() { a = 10; b = 20; } void showdata() { cout << "A=" << a << "B=" << b; } }; void main() { demo obj1; obj1.showdata(); getch(); } Constructor will get automatically called when the object obj1 is created
  • 21. www.ecti.co.in C++ Programming Parameterized Constructors • In the example seen before variables of all the objects created will get initialized to 10 and 20. If we want to initialize them to different values you have to use parameterized constructors. • The constructors with arguments is called as parameterized constructors. class demo { int a, b; public: demo(int x, int y); //parameterized …………….; constructor …………….; }; demo :: demo (int x, int y) { a = x; b = y; } • You can call the parameterized constructor implicitly or explicitly • Implicit call: demo obj(10, 20); • Explicit call: demo obj = demo(10,20);
  • 22. www.ecti.co.in C++ Programming Constructor Overloading class maths { int x, y; public: maths() { x = 0; y = 0} maths(int a, int b) { x = a; y = b;} maths(maths &o) { x = o.x, y = o.y} }; • In the above class we have overloaded three constructors. • maths obj declaration will invoke first constructor where x and y will be initialized to 0. • maths obj1(100, 200) will invoke second constructor where x and y will be initialized to 100 & 200 respectively. • maths obj2(obj1) will invoke third constructor and will copy the values of obj1 to obj2. Hence it is called as copy constructor. • Some other examples of copy constructor – • maths obj2 = obj1 will create a new object obj2 and same time will initialize the values to that of obj1. • obj2 = obj1 will not invoke copy constructor but due to = operator overloaded it will initialize the values of obj2 to obj1 member by member. • The parameter to a constructor can be any type except the class it belongs to. • Hence maths(maths o) will not work but maths(maths &o) will work because we have passed the reference of it’s own class.
  • 23. www.ecti.co.in C++ Programming Destructor • Destructor is used to destroy the objects created by constructors. • Same as constructor destructor name is also same as that of class name preceded by tilde (~) character. • Destructor does not take any argument nor returns any value. • Destructor is automatically invoked by the compiler on exit of a program or a block of code in which the objects are declared. • Destructor releases the memory for further use. e.g. ~student () { cout<<“nIn Destructor”; } Destructor for class student.
  • 24. www.ecti.co.in C++ Programming this Pointer  This pointer is used to represent an object that invokes a member function.  This pointer points to the object on which a function is called e.g. obj.sum() will set this pointer to the address of object obj.
  • 25. www.ecti.co.in C++ Programming Program with ambiguity issue #include<iostream.h> #include<conio.h> class maths { int a, b; maths(int a, int b) { a=a; b=b; //both a & b are locals } void display() { cout << a << ", " << b; } }; void main() { maths obj1(10, 20); clrscr(); obj1.display(); getch(); } • Here we are expecting the output would be 10, 20. But the output would be some garbage values. Because a and b are the local variables. Hence the statement a = a and b = b assigns the values of local variables a and b to itself.
  • 26. www.ecti.co.in C++ Programming Use of this keyword #include<iostream.h> #include<conio.h> class maths { int a, b; maths(int a, int b) { this->a = a; this->b = b; } void display() { cout << a << ", " << b; } }; int main() { maths obj1(10, 20); clrscr(); obj1.display(); getch(); return 0; } Output : - 10 , 20
  • 27. www.ecti.co.in C++ Programming new Keyword (Dynamic Memory Allocation)  Allocating memory to the objects at the time of their construction is called as Dynamic Memory Allocation. The memory is allocated with the help of new keyword.  Dynamic memory allocation enables programmer to allocate right amount of memory when the objects are not of the same size.
  • 28. www.ecti.co.in C++ Programming Use of new keyword #include<iostream.h> #include<string.h> class String { char *name; int length; public: String() { length = 0; name = new char [length + 1]; } String(char *s) { length = strlen(s); name = new char [length + 1]; strcpy(name, s); } void display() { cout << name << "n"; } void join (String &, String &); }; void String :: join (String &a, String &b) { length = strlen(a.name) + strlen(b.name); delete name; name = new char [length + 1]; strcpy(name, a.name); strcat(name, b.name); } continued on next slide….
  • 29. www.ecti.co.in C++ Programming Use of new keyword void main() { char *first = "Parag "; String name1(first), name2("Sarang "), name3("Pooja "), s1, s2; s1.join(name1, name2); s2.join(s1, name3); name1.display(); name2.display(); name3.display(); s1.display(); s2.display(); getch(); } The output of the program is – Parag Sarang Pooja ParagSarang ParagSarangPooja
  • 30. www.ecti.co.in C++ Programming Static Data Members • We can declare any data member as Static. • Static data member is initialized to zero when the first object of the class is created. No other initialization is permitted. • When we define a data member as Static only one copy of that member is created for all the objects. • It is visible only within the class, but its lifetime is for the entire program. class stat { int no, static int scount; //Static member Variable public: void getdata(int x) { no= x; scount++; } void getcount() { cout<<"Count: "<<scount; } };
  • 31. www.ecti.co.in C++ Programming Static Data Members int stat :: scount; void main() { stat a, b, c; a.getcount(); b.getcount(); c.getcount(); a.getdata(100); cout << "After initialization: " << "n"; a.getcount(); cout << "After initialization : " << "n"; b.getdata(200); b.getcount(); c.getdata(300); cout << "After initialization : " << "n"; c.getcount(); getch(); } The output of the program is – Count: 0 Count: 0 Count: 0 After initialization: Count: 1 After initialization: Count: 2 After initialization: Count: 3
  • 32. www.ecti.co.in C++ Programming Static Member Functions • We can declare static member functions as we define a data member as static. • A static function can access other static member functions or static data members. • Static functions are called using the class name and cannot be called using the objects of the class. class stat1 { int no; static int scount; public: void setno() { no = ++scount; } void showno() { cout << "nObject Number:" << no; } continued on next slide….
  • 33. www.ecti.co.in C++ Programming static void showcount() { cout<<"nCount: " << scount; } }; //end of class int stat1 :: scount; int main() { stat1 s1, s2; s1.setno(); s2.setno(); stat :: showcount(); //calling static function stat1 s3; s3.setno(); stat :: showcount(); s1.showno(); s2.showno(); s3.showno(); getch(); } // end of main Output: Count: 2 Count: 3 Object Number: 1 Object Number: 2 Object Number: 3
  • 34. www.ecti.co.in C++ Programming Friend Functions • The private members of a class cannot be accessed from outside the class. • There might be situation in which the two classes need to share a particular function, we need to make that function as a friend function of both the class. • So using friend function we can access private data of both the classes. class ABC { ………. ………. public: ………. ………. friend void name(ABC); }; • You cannot call a friend function using an object of a class, it needs to be called as normal function. • You need to pass object as an argument.
  • 35. www.ecti.co.in C++ Programming class calMath { int a, b; public: void setdata(int x, int y) { a = x; b = y; } friend float mean(calMath ); }; float mean (calMath m) { float x = (m.a + m.b) / 2.0; return x; } int main() { calMath mobj; mobj.setdata(22,19); cout<<“nMean = “<<mean(mobj); getch(); } Output: Mean = 20.5
  • 36. www.ecti.co.in C++ Programming Friend Function to Two Classes class PQR; //forward declaration class LMN { int a; public: void setdata(int x) { a = x; } friend void max(LMN, PQR); }; class PQR { int b; public: void setvalue(int y) { b = y; } friend void max(LMN, PQR); }; void max(LMN l, PQR p) { if(l.a > p.b) cout<<“Max No. = “<<l.a; else cout<<“Max No. = “<<p.b; } void main() { LMN lmn; lmn.setdata(100); PQR pqr; pqr.setvalue(200); max(lmn, pqr); getch(); } Output: Max No. = 200
  • 37. www.ecti.co.in C++ Programming Operator Overloading • In C++ you can give special meaning to the operators. This process is called as operator overloading. • In C++ all the operators except the following operators can be overloaded – – Class member operators (., .*) – Scope resolution Operator (::) – Size operator (sizeof) – Conditional operators (?:) return_type class_name :: operator (op-argslist) { …………….; …………….; } • Operator functions must be either member functions (non-static) or friend functions. • Friend function will only have one argument for unary operators and two for binary operators. • Member function has no arguments for unary operators and only one for binary operators.
  • 38. www.ecti.co.in C++ Programming Overloading Unary Operators class opunary { int no; public: void getdata(int ); void showdata(); void operator –(); }; void opunary :: getdata (int a) {no = a; } void opunary :: showdata() {cout << no; } void opunary :: operator – () {no = -no; } void main() { opunary obj; obj.getdata(10); cout << “Value is: “; obj.showdata(); -obj; cout << “Value is: “; obj.showdata(); getch(); } Output : - Value is: 10 Value is: -10
  • 39. www.ecti.co.in C++ Programming Overloading Binary Operators class complex { float real, img; public: complex(){ } complex(float r, float i) { real = r; img = i; } complex operator +(complex); void display(); }; complex complex :: operator +(complex c) { complex temp; temp.real = real + c.real; temp.img = img + c.img; return temp; } void complex :: display() { cout<<real<<"+”<<img<<“i”; } void main() { complex c1, c2, c3; c1 = complex(3.2, 1.8); c2 = complex(2.3, 5.3); c3 = c1 + c2; cout << "C1 = "; c1.display(); cout << "C2 = "; c2.display(); cout << "C3 = "; c3.display(); getch(); }
  • 40. www.ecti.co.in C++ Programming Inheritance • Inheritance is a feature of OOP which enables user for reusability of the code. • You can create new classes which can use properties of existing classes using inheritance and we can add new features in derived class. • In inheritance the old class is called as base class and the new class is called as derived class. • The derived class inherits some or all features from base class. • One class can be derived from many base classes or many classes can be derived from one base class. class derived : visibility_mode base { ……………; ……………; }
  • 42. www.ecti.co.in C++ Programming Deriving a Class from Base Class Default Private Derivation: class derived : base { members of derived class; } Private Derivation: class derived : private base { members of derived class; } Public Derivation: class derived : public base { members of derived class; } • The : indicates derivation of derived from base class. Private or Public indicate the visibility of the features of base class into derived class. • If privately derived, the public members of base class become private members of derived class and if publically derived then public members of base class become public members of derived class. In private derivation we cannot access public member functions of base class from derived class object but in public derivation we can access public member functions of base class from derived class object.
  • 43. www.ecti.co.in C++ Programming Protected Access Specifier • If we require the private data to be visible in the derived class then C++ provides the protected visibility modifier. • Protected member inherited in public mode becomes protected in derived class, hence it is accessible to the member function of derived class and ready for further inheritance. • Protected member inherited in private mode becomes private in derived class, hence it is accessible to the member functions of derived class but not available for further inheritance. class ABC { private: //optional ……………; //visible to member ……………;//functions within the class protected: ……………; //visible to member functions ……………; //of its own and derived class public: ……………; //visible all the functions ……………; //in the program };
  • 44. www.ecti.co.in C++ Programming Function Overriding • When we define a function with same name and arguments in both base class and derived class, then the function is called as overridden function and this process is called as function overriding. • Function overriding enables programmer to change the behavior of any base class functionality in the derived class. • When you call the overridden function by child object the child version is called and when you call the overridden using base object the base version is called. class A { ……………; public: void getdata(int); }; Class B : public A { ……………; public: // overridden function void getdata(int); void showdata(); };
  • 45. www.ecti.co.in C++ Programming Ambiguity Resolution in Inheritance class ABC { public: void display(void) { cout<<"I am in Class ABC"; } }; class XYZ { public: void display(void) { cout<<"I am in Class XYZ"; } }; class LMN : public ABC, public XYZ { public: void show(void) { cout<<"I am in class LMN"; } }; int main() { LMN o; o.display(); //will give ambiguity error o.ABC::display(); //display of ABC called o.XYZ::display(); //display of XYZ called p.show(); getch(); }
  • 46. www.ecti.co.in C++ Programming Virtual Base Class • In above inheritance, B and C classes inherit features of A and then as D is derived from B and C, there is an ambiguity error because the compiler does not understand how to pass features of Class A to Class D either using B class or C Class. • So to remove the ambiguity you need to make the class B and class C as virtual base classes. Class B : public virtual A Class C : virtual public A • When the class is made as virtual base class, the compiler takes necessary care to pass only one copy of the members in inherited class regardless of many inheritance paths exist between the virtual base class and derived class.
  • 47. www.ecti.co.in C++ Programming Virtual Base Class - Example class student { protected: int roll_number; public: void get_number(int a) { roll_number = a; } void put_number(void) { cout <<"Roll Number: "<<roll_number << "n"; } }; class test : public virtual student { protected: float part1, part2; public: void get_marks(float x, float y) { part1 = x; part2 = y; } void put_marks(void) { cout<<"Markts Obtained: "<<"n"<<"Part1 = "<<part1<< "n"<<"Part2 = "<<part2<< "n"; } }; continued on next slide….
  • 48. www.ecti.co.in C++ Programming class sports : virtual public student { protected: float score; public: void get_score(float s) { score = s; } void put_score(void) { cout << "Sports Marks = " << score << "n"; } }; class result : public test, public sports { float total; public: void display(void); }; void result :: display(void) { total = part1+part2+score; put_number(); put_marks(); put_score(); cout<<"Total Score: "<<total <<"n"; } void main() { result student1; student1.get_number(10); student1.get_marks(75.25,82.90); student1.get_score(92.80); student1.display(); getch(); }
  • 49. www.ecti.co.in C++ Programming Behaviour of Constructors in Derived Class • When we create the object of derived class the default constructor of base class gets called and then default constructor of derived class gets called. • When you create object of derived class with parameters, still default constructor of base class gets called and parameterized constructor of child class gets called. • If base class contains constructor more than one argument, then it is compulsory for the derived class to have a constructor and pass the arguments to base class constructor.
  • 50. www.ecti.co.in C++ Programming Constructors in Single Inheritance (Example) class base { int a; public: base() { cout << "I am into base's default constructor"; } base(int x) { cout << "I am into base's parameterized constructor"; a = x; } void show_a() { cout << "nThe value of a is: " << a; } }; class derived : public base { int b; public: derived() { cout << "nI am in child's default constructor"; } derived(int y, int z):base(y) { cout << "nI am in child's parameterized constructor"; b = z; } void show_b() { cout << "nThe value of b is: " << b; } }; continued on next slide….
  • 51. www.ecti.co.in C++ Programming void main() { derived d; derived d1(10,20); d.show_b(); d.show_a(); getch(); } Output: I am into base's default constructor I am into child's default constructor I am into base's parameterized constructor I am into child's parameterized constructor The value of b is: 20 The value of a is: 10
  • 52. www.ecti.co.in C++ Programming Constructors in Multilevel Inheritance (Example) class A { int a; public: A() { cout << "Into Class A's default constructor"; } A(int x) { a = x; cout << "nInto Class A's parameterized constructor"; cout << "nA = " << a; } }; class B:public A { int b; public: B() { cout << "nInto Class B's default constructor"; } B(int l, int m):A(l) { b = m; cout << "nIn Class B's parameterized constructor"; cout << "nB = " << b; } }; continued on next slide….
  • 53. www.ecti.co.in C++ Programming class C:public B { int c; public: C() { cout << "nInto Class C's default constructor"; } C(int p,int q, int r):B(p,q) { c = r; cout << "nInto Class C's parameterized constructor"; cout << "nC = " << c; } }; void main() { C c; C c1(10,20,30); getch(); } Output: Into Class A's default constructor Into Class B's default constructor Into Class C's default constructor Into Class A's parameterized constructor A = 10 Into Class B's parameterized constructor B = 20 Into Class C's parameterized constructor C = 30
  • 54. www.ecti.co.in C++ Programming Abstract Class • Abstract class is designed to act as base class for other classes. • It is a design concept in a program development and provides a base upon which other classes may be built. • You cannot create object of an Abstract class. • Abstract class is used only to derive other child classes. • A class with a Pure Virtual Function is called as an Abstract Class Class A { int a,b; public: //pure virtual func void add()=0; void show(); void get(); }
  • 56. www.ecti.co.in C++ Programming put() and get() Functions • get() function is defined in the istream class in order to handle single character inputs. • It can be implemented as: – cin.get(ch); The above method calls the get() function with ch as a parameter. – ch=cin.get(); The above method calls the get() function without a parameter returning the value to the variable ch. • put() function is defined in the class ostream in order to handle single character outputs. • It can be implemented as: – cout.put(‘x’); The above method calls the put function with a character value ‘x’ as a parameter. – cout.put(ch); The above method calls the put() function with a variable ch.
  • 57. www.ecti.co.in C++ Programming get() and put() function void main() { char ch; cout<<“Enter character: “; cin.get(ch); cout<<“You entered: “<<ch; getch(); } Output: Enter character: h You entered: h void main() { char ch; cout<<“Enter character: “; cin.get(ch); cout<<“You entered: “; cout.put(ch); getch(); } Output: Enter character: h You entered: h
  • 58. www.ecti.co.in C++ Programming getline() and write() Functions • getline() is a function defined to handle strings in the istream class. • It takes two parameters: – A string variable that takes the string – Number of characters to be accepted as a string (line). • write() is a similar function used to write strings onto files. It is defined in the ostream class. • It takes two parameters: – A string that is to be displayed on the console – Number of characters to be written.
  • 59. www.ecti.co.in C++ Programming getline() and write() Functions void main() { char ch[20]; cout<<“Enter a string: “; cin.getline(ch,19); cout<<“You entered: “<<ch; getch(); } Output: Enter a string: Envision You entered: Envision void main() { char ch[20]; cout<<“Enter a string: “; cin.getline(ch,19); cout<<“You entered: “; cout.write(ch,19); getch(); } Output: Enter a string: Envision You entered: Envision
  • 60. www.ecti.co.in C++ Programming Formatted Console I/O Operators • Unformatted console operators are used in order to manipulate or interpret the input and output. • On the other hand, formatted operators are used in order to give formatting to the output of your program. • These operators are used just to give a formatting to the input / output. These cannot be used as tools to I/O.
  • 61. www.ecti.co.in C++ Programming ios Format Functions Function Description width() To specify the required field size for displaying an output value precision() To specify the number of digits to be displayed after the decimal point of a float value fill() To specify a character that is used to fill the unused portion of a field setf() To specify format flags that can control the form of output display unsetf() To clear the flags specified
  • 62. www.ecti.co.in C++ Programming Defining Field Width: width() • We can use the width() function to define the width of a field necessary for the output of an item. Since it is defined within the class ostream, we call it as: cout.width(w); • e.g.: cout.width(5); cout << 543 << 12 << “n”; cout.width(5); cout << 543; cout.width(5); cout << 12; 345 21 345 21
  • 63. www.ecti.co.in C++ Programming Setting precision: precision() • By default, the floating point values are printed with six digits after the decimal. However, we can specify the number of digits to be displayed after the decimal through precision(); • e.g.: cout.precision(3); cout << 3.14159; cout << 2.50062; • Output: 3.142 2.5 (no trailing zeros)
  • 64. www.ecti.co.in C++ Programming Filling & Padding: fill() • We have been printing values using larger spaces than required. These are generally blank spaces. With the help of fill(), we can fill the unused positions with the desired character. • e.g.: cout.fill(‘*’); cout.width(5); cout << 23; • Output: * * 32*
  • 65. www.ecti.co.in C++ Programming Formatting flags, bit-fields & setf() • When we use width(), precision() and fill() functions, the data is put by default in right justification. • We can manage this using this formatting. • The setf() is a member function of the ios class and can set various flags in order to give proper formatting. cout.setf(arg1, arg2); • Here, arg1 is one of the formatting flags defined in the class ios. It specifies the format action required for the output. • Also present is, arg2. This specifies which group does the formatting flag belong to. It is called as the bit-field
  • 66. www.ecti.co.in C++ Programming Format Required Flag (arg1) Bit-field (arg2) Left-justification ios::left ios::adjustfield Right-justification ios::right ios::adjustfield padding after sign or base indicator ios::internal ios::adjustfield Scientific notation ios::scientific ios::floatfield fixed point notation ios::fixed ios::floatfield decimal base ios::doc ios::basefield octal base ios::oct ios::basefield hexadecimal base ios::hex ios::basefield …continued
  • 67. www.ecti.co.in C++ Programming Working on Files ios streambuf ostreamistream iostream iostream_withassign ostream_withassignistream_withassign fstream base filebuf iostreamfilefstreamfile
  • 68. www.ecti.co.in C++ Programming Opening and Closing a File • There are input and output stream classes for files similar to those for consoles. • These are ifstream and ofstream respectively. • To open a file in WRITE mode, we need to an object of the output stream. • Thus, ofstream outfile(“results.txt”); is the desired statement. • Similarly, to open a file in READ mode, the syntax is, ifstream infile(“results.txt”); • A file can also be opened through a function, infile.open(“results.txt”); • To close the file, we simply call the close function through the object: infile.close();
  • 69. www.ecti.co.in C++ Programming Writing and Reading from a File • Writing to a file is done through the overloaded operator (<<). • e.g.: ofstream outf; outf.open(“results.txt”); outf << “Hello World!”; • Similarly, reading is done through the overloaded operator (>>). • e.g.: ifstream inf; char name[30]; inf.open(“results.txt”); inf >> name;
  • 70. www.ecti.co.in C++ Programming The getline() Function and EOF character • File contents can also be read through a member function getline(). • It takes 2 parameters: – a string – number of characters ifstream inf; char name[30]; inf.open(“results.txt”); inf.getline(name,20); getch(); • When reading content from the file, we need to make sure that the End-of-File has not been encountered. • To make sure we get this, a member function eof() is called to check if the end of file is encountered. • The eof() returns a 0 if false. ifstream inf(“results.txt”); if(inf.eof()) { exit(0); }
  • 71. www.ecti.co.in C++ Programming Exception Handling • The problems which are not syntax errors nor logical errors are called as Exceptions. • When these are encountered, the program terminates unexpectedly. • To avoid this, we use exception handling. • Exception occurred • Exception thrown • Exception caught • Exception processed Try Block Catch Block
  • 72. www.ecti.co.in C++ Programming Exception Handling  try block throwing an exception  Invoking function throwing an exception  Multiple catch statements  catch-all  Rethrowing an exception
  • 73. www.ecti.co.in C++ Programming Templates  Templates is a feature in C++ which enables us to define generic classes and functions and thus provides support for generic programming.  A template can be used to create a family of classes or functions.  We can template for both:  Function Template  Class Template
  • 74. www.ecti.co.in C++ Programming Function Templates template <class T> void swap(T &x, T &y) { T temp=x; x=y; y=temp; } • The definition above essentially declares a set of overloaded functions, one for each data type. We can invoke this swap function like an ordinary function e.g.: template <class T> void swap(T &x, T &y) { T temp=x; x=y; y=temp; } void func(int m, int n, char ch, char pq) { swap(m,n); swap(ch,pq); }
  • 75. www.ecti.co.in C++ Programming Class Templates template <class T> class vector { T vect; int size; public: vector() { } vector(T a) { vect=a; } }; • The class above is defined as a generic class and can take any data type specified. • In order to define an object of the said class with the variable ‘vect’ as an integer, we write, vector <int> v1; • Similarly, for a character, we say, vector <char> v2;
  • 76. www.ecti.co.in C++ Programming END OF BASICS IN C++  Thus, the basics of C++ programming ends here.  We hope you are satisfied with the theory provided.  You may get back to us for advance C++ concepts like Standard Template Libraries (STLs) and more.  Feel free to share, distribute or use it in any form you wish to. IT IS FOR YOU. 
  • 77. www.ecti.co.in C++ Programming For advance C++ programming course or for any doubts in this tutorial, please contact us on any of the following details: Call us on: 02065000419 / 02065111419 E-mail us at: prog@ecti.co.in Web URL: www.ecti.co.in For any suggestions of complaints regarding the theory or programs in the tutorial, write us at: complaints@ecti.co.in END OF BASICS IN C++