SlideShare a Scribd company logo
ACA Summer School 2014
Advanced C++
Pankaj Prateek
ACA, CSE, IIT Kanpur
June 23, 2014
Course website:
http:
//www.cse.iitk.ac.in/users/aca/sumschool2014.html
Evaluation
End Sem - 50%
Assignments / In-class quiz - 50%
Timings:
M-F 1430 - 1600 hrs
Prerequisites
A good command over any programming language preferably
C/C++
Pointers
Structures
Structures
How do you store the details of a person?
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
Information is not grouped in any way.
To pass your information to a function, you would have to
pass each variable independently.
If wanted to store information about many people, would have
to declare arrays.
Structures
How do you store the details of a person?
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
Information is not grouped in any way.
To pass your information to a function, you would have to
pass each variable independently.
If wanted to store information about many people, would have
to declare arrays.
Structures
How do you store the details of a person?
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
Information is not grouped in any way.
To pass your information to a function, you would have to
pass each variable independently.
If wanted to store information about many people, would have
to declare arrays.
Structures
How do you store the details of a person?
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
Information is not grouped in any way.
To pass your information to a function, you would have to
pass each variable independently.
If wanted to store information about many people, would have
to declare arrays.
Structures
How do you store the details of a person?
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
Information is not grouped in any way.
To pass your information to a function, you would have to
pass each variable independently.
If wanted to store information about many people, would have
to declare arrays.
Structures
C++ allows to create own user-defined data types to aggregate
different variables : structs
Structure declaration
struct Person{
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
}; //DO NOT forget a semicolon
Now person structure can be used as a built-in variable.
Structures
C++ allows to create own user-defined data types to aggregate
different variables : structs
Structure declaration
struct Person{
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
}; //DO NOT forget a semicolon
Now person structure can be used as a built-in variable.
Structures
C++ allows to create own user-defined data types to aggregate
different variables : structs
Structure declaration
struct Person{
char strName [20];
int nBirthYear;
int nBirthMonth;
int nBirthDay;
int nHeight;
}; //DO NOT forget a semicolon
Now person structure can be used as a built-in variable.
Structures
Usage
struct Person p1;
struct Person p2;
Accessing Members:
p1.name = ‘‘pankaj ’’;
p1.nBirthDay = 20;
p2.name = ‘‘Rahul ’’;
Structures
Usage
struct Person p1;
struct Person p2;
Accessing Members:
p1.name = ‘‘pankaj ’’;
p1.nBirthDay = 20;
p2.name = ‘‘Rahul ’’;
Structures
No memory is allocated in structure declaration
Size of a structure is the sum of sizes of it elements
Can pass entire structures to functions
void PrintInfo(struct Person p) {
cout << ‘‘Name: ’’ << p.name <<endl;
cout << ‘‘bDay: ’’ << p.nBirthDay <<endl;
}
int main () {
struct Person p1;
p1.name = ‘‘Pankaj ’’;
p1.nBirthDay = 20;
PrintInfo(p1);
}
Structures
No memory is allocated in structure declaration
Size of a structure is the sum of sizes of it elements
Can pass entire structures to functions
void PrintInfo(struct Person p) {
cout << ‘‘Name: ’’ << p.name <<endl;
cout << ‘‘bDay: ’’ << p.nBirthDay <<endl;
}
int main () {
struct Person p1;
p1.name = ‘‘Pankaj ’’;
p1.nBirthDay = 20;
PrintInfo(p1);
}
Structures
No memory is allocated in structure declaration
Size of a structure is the sum of sizes of it elements
Can pass entire structures to functions
void PrintInfo(struct Person p) {
cout << ‘‘Name: ’’ << p.name <<endl;
cout << ‘‘bDay: ’’ << p.nBirthDay <<endl;
}
int main () {
struct Person p1;
p1.name = ‘‘Pankaj ’’;
p1.nBirthDay = 20;
PrintInfo(p1);
}
Structures
Always have to use the word “struct”
No explicit connection between members of a structure and
the functions manipulating them
Cannot be treated as built-in types (c1 + c2 is not valid for
instances of “struct complex”)
Data hiding is not permitted (Why do we need this?)
All members of a structure are by defaut “public” (will be
discussed later)
Structures
Always have to use the word “struct”
No explicit connection between members of a structure and
the functions manipulating them
Cannot be treated as built-in types (c1 + c2 is not valid for
instances of “struct complex”)
Data hiding is not permitted (Why do we need this?)
All members of a structure are by defaut “public” (will be
discussed later)
Structures
Always have to use the word “struct”
No explicit connection between members of a structure and
the functions manipulating them
Cannot be treated as built-in types (c1 + c2 is not valid for
instances of “struct complex”)
Data hiding is not permitted (Why do we need this?)
All members of a structure are by defaut “public” (will be
discussed later)
Structures
Always have to use the word “struct”
No explicit connection between members of a structure and
the functions manipulating them
Cannot be treated as built-in types (c1 + c2 is not valid for
instances of “struct complex”)
Data hiding is not permitted (Why do we need this?)
All members of a structure are by defaut “public” (will be
discussed later)
Structures
Always have to use the word “struct”
No explicit connection between members of a structure and
the functions manipulating them
Cannot be treated as built-in types (c1 + c2 is not valid for
instances of “struct complex”)
Data hiding is not permitted (Why do we need this?)
All members of a structure are by defaut “public” (will be
discussed later)
Classes
Extension of structures
Class Definition
class class_name {
private:
variable declarations;
function declarations;
public:
variable declarations;
function declarations;
}; //DO NOT forget the semicolon
Classes
Extension of structures
Class Definition
class class_name {
private:
variable declarations;
function declarations;
public:
variable declarations;
function declarations;
}; //DO NOT forget the semicolon
Class: Example
Example
class item {
private:
int number; // variable declarations
float cost; // private by default!
public:
// function declarations through prototypes
void getData(int a, float b);
void putData(void );
}
Class
No memory allocated for a class definiton. It is only a “template”,
like a definition of a structure
Class: Public and Private
Private members are not directly accessible outside the class.
They are “hidden” from the outside world. The only way to
access them is by using public functions (if defined) which
manipulate them.
Public members can be accessed using the dot operator
(member selection operator). Eg. student.name,
item.getData()
Class: Public and Private
Private members are not directly accessible outside the class.
They are “hidden” from the outside world. The only way to
access them is by using public functions (if defined) which
manipulate them.
Public members can be accessed using the dot operator
(member selection operator). Eg. student.name,
item.getData()
Class: Objects
Class, like a structure definition, is a user-defined data type
without any concrete existance.
A concrete instance of a class is an object.
Memory is allocated for every object that is created.
An independent new set of variables is created for each object.
Public members can be accessed by using the dot operator on
the object while private members cannot be accessed directly.
Class: Objects
Class, like a structure definition, is a user-defined data type
without any concrete existance.
A concrete instance of a class is an object.
Memory is allocated for every object that is created.
An independent new set of variables is created for each object.
Public members can be accessed by using the dot operator on
the object while private members cannot be accessed directly.
Class: Objects
Class, like a structure definition, is a user-defined data type
without any concrete existance.
A concrete instance of a class is an object.
Memory is allocated for every object that is created.
An independent new set of variables is created for each object.
Public members can be accessed by using the dot operator on
the object while private members cannot be accessed directly.
Class: Objects
Class, like a structure definition, is a user-defined data type
without any concrete existance.
A concrete instance of a class is an object.
Memory is allocated for every object that is created.
An independent new set of variables is created for each object.
Public members can be accessed by using the dot operator on
the object while private members cannot be accessed directly.
Class: Objects
Class, like a structure definition, is a user-defined data type
without any concrete existance.
A concrete instance of a class is an object.
Memory is allocated for every object that is created.
An independent new set of variables is created for each object.
Public members can be accessed by using the dot operator on
the object while private members cannot be accessed directly.
Class: Objects
Object Creation
Just like variable declaration
Memory is allocated for every object that is created
Example:
item a;
item b,c,d;
Class: Objects
Object Creation
Just like variable declaration
Memory is allocated for every object that is created
Example:
item a;
item b,c,d;
Class: Objects
Object Creation
Just like variable declaration
Memory is allocated for every object that is created
Example:
item a;
item b,c,d;
Class: Objects
Object Creation
Just like variable declaration
Memory is allocated for every object that is created
Example:
item a;
item b,c,d;
Class: Function definitions
Outside the class
class Employee {
int empno , salary;
public:
void set(int roll , int sal);
};
void employee ::set(int roll , int sal) {
empno = roll;
salary = sal;
}
Class: Function definitions
Outside the class
class Employee {
int empno , salary;
public:
void set(int roll , int sal);
};
void employee ::set(int roll , int sal) {
empno = roll;
salary = sal;
}
Class: Function definitions
Inside the class
class Employee {
int empno , salary;
public:
void set(int roll , int sal) {
empno = roll;
salary = sal;
}
};
Class: Function definitions
Inside the class
class Employee {
int empno , salary;
public:
void set(int roll , int sal) {
empno = roll;
salary = sal;
}
};
Important Properties
Invoking other member functions from inside a member
function does not require explicit use of the object
Array size, if used inside classes, need to be determined at
compile time (for dynamic arrays, with size to be determined
at run time, “new” operator is used inside a constructor, will
be discussed later)
Arrays of objects are allowed (stored contiguously). Objects
can be used as members of some other class in nested fashion.
Objects, just like built-in types, can be return type of
functions.
Private functions and variables can only be accessed from
within the class.
Important Properties
Invoking other member functions from inside a member
function does not require explicit use of the object
Array size, if used inside classes, need to be determined at
compile time (for dynamic arrays, with size to be determined
at run time, “new” operator is used inside a constructor, will
be discussed later)
Arrays of objects are allowed (stored contiguously). Objects
can be used as members of some other class in nested fashion.
Objects, just like built-in types, can be return type of
functions.
Private functions and variables can only be accessed from
within the class.
Important Properties
Invoking other member functions from inside a member
function does not require explicit use of the object
Array size, if used inside classes, need to be determined at
compile time (for dynamic arrays, with size to be determined
at run time, “new” operator is used inside a constructor, will
be discussed later)
Arrays of objects are allowed (stored contiguously). Objects
can be used as members of some other class in nested fashion.
Objects, just like built-in types, can be return type of
functions.
Private functions and variables can only be accessed from
within the class.
Important Properties
Invoking other member functions from inside a member
function does not require explicit use of the object
Array size, if used inside classes, need to be determined at
compile time (for dynamic arrays, with size to be determined
at run time, “new” operator is used inside a constructor, will
be discussed later)
Arrays of objects are allowed (stored contiguously). Objects
can be used as members of some other class in nested fashion.
Objects, just like built-in types, can be return type of
functions.
Private functions and variables can only be accessed from
within the class.
Important Properties
Invoking other member functions from inside a member
function does not require explicit use of the object
Array size, if used inside classes, need to be determined at
compile time (for dynamic arrays, with size to be determined
at run time, “new” operator is used inside a constructor, will
be discussed later)
Arrays of objects are allowed (stored contiguously). Objects
can be used as members of some other class in nested fashion.
Objects, just like built-in types, can be return type of
functions.
Private functions and variables can only be accessed from
within the class.
Classes
Problem
Consider a class “car” which has the carNo, carModel, carMake
fields and relevant functions to modify them.
You have to count the number of objects of the class created.
How do you do it?
Classes
Problem
Consider a class “car” which has the carNo, carModel, carMake
fields and relevant functions to modify them.
You have to count the number of objects of the class created.
How do you do it?
Classes
Problem
Consider a class “car” which has the carNo, carModel, carMake
fields and relevant functions to modify them.
You have to count the number of objects of the class created.
How do you do it?
Static Members
class item {
static int count;
// rest of class definition
};
int item :: count;
Static Members
Properties
Every static member needs to be defined outside the class as
well.
Only one copy of the static variable is shared among all objects
of the class.
Visible only within the class but exists for the lifetime of the
program.
No object instantiation is required to access static members.
Static Members
Properties
Every static member needs to be defined outside the class as
well.
Only one copy of the static variable is shared among all objects
of the class.
Visible only within the class but exists for the lifetime of the
program.
No object instantiation is required to access static members.
Static Members
Properties
Every static member needs to be defined outside the class as
well.
Only one copy of the static variable is shared among all objects
of the class.
Visible only within the class but exists for the lifetime of the
program.
No object instantiation is required to access static members.
Static Members
Properties
Every static member needs to be defined outside the class as
well.
Only one copy of the static variable is shared among all objects
of the class.
Visible only within the class but exists for the lifetime of the
program.
No object instantiation is required to access static members.
Static Members
Properties
Every static member needs to be defined outside the class as
well.
Only one copy of the static variable is shared among all objects
of the class.
Visible only within the class but exists for the lifetime of the
program.
No object instantiation is required to access static members.
Memory Allocation of Objects
For member functions and static variables, memory is allocated
when the class is defined, all objects of the class share the
same function code and static variables (every class does not
get its own copy). “this” pointer is implicitly passed so that
the function code is executed on the correct class instance.
For variables, memory is allocated when the object is defined.
Each instance gets its own set of variables.
Memory Allocation of Objects
For member functions and static variables, memory is allocated
when the class is defined, all objects of the class share the
same function code and static variables (every class does not
get its own copy). “this” pointer is implicitly passed so that
the function code is executed on the correct class instance.
For variables, memory is allocated when the object is defined.
Each instance gets its own set of variables.
Class: Friend
Shared functions among multiple classes
Properties:
Can access private members of the class
Often used in operator overloading
Not in the scope of the class. Cannot be called using an object
of the class.
Can be invoked like a normal function
Cannot access members of a class directly without an object of
the class
Class: Friend
Shared functions among multiple classes
Properties:
Can access private members of the class
Often used in operator overloading
Not in the scope of the class. Cannot be called using an object
of the class.
Can be invoked like a normal function
Cannot access members of a class directly without an object of
the class
Class: Friend
Shared functions among multiple classes
Properties:
Can access private members of the class
Often used in operator overloading
Not in the scope of the class. Cannot be called using an object
of the class.
Can be invoked like a normal function
Cannot access members of a class directly without an object of
the class
Class: Friend
Shared functions among multiple classes
Properties:
Can access private members of the class
Often used in operator overloading
Not in the scope of the class. Cannot be called using an object
of the class.
Can be invoked like a normal function
Cannot access members of a class directly without an object of
the class
Class: Friend
Shared functions among multiple classes
Properties:
Can access private members of the class
Often used in operator overloading
Not in the scope of the class. Cannot be called using an object
of the class.
Can be invoked like a normal function
Cannot access members of a class directly without an object of
the class
Class: Friend
Shared functions among multiple classes
Properties:
Can access private members of the class
Often used in operator overloading
Not in the scope of the class. Cannot be called using an object
of the class.
Can be invoked like a normal function
Cannot access members of a class directly without an object of
the class
Class: Friend
Shared functions among multiple classes
Properties:
Can access private members of the class
Often used in operator overloading
Not in the scope of the class. Cannot be called using an object
of the class.
Can be invoked like a normal function
Cannot access members of a class directly without an object of
the class
Class: Friend
Properties: (cont. . . )
Can be declared as either private or public without changing
the meaning
Objects can be passed to the function by value or by reference
A class can be defined to be the friend of another class. In
that case, all member functions of one class are friends of the
other class
Class: Friend
Properties: (cont. . . )
Can be declared as either private or public without changing
the meaning
Objects can be passed to the function by value or by reference
A class can be defined to be the friend of another class. In
that case, all member functions of one class are friends of the
other class
Class: Friend
Properties: (cont. . . )
Can be declared as either private or public without changing
the meaning
Objects can be passed to the function by value or by reference
A class can be defined to be the friend of another class. In
that case, all member functions of one class are friends of the
other class
Class: Friend
Properties: (cont. . . )
Can be declared as either private or public without changing
the meaning
Objects can be passed to the function by value or by reference
A class can be defined to be the friend of another class. In
that case, all member functions of one class are friends of the
other class
References
The C++ Programming Language
- Bjarne Stroustrup
Object Oriented Programming with C++
- E Balaguruswamy
http://www.cplusplus.com/reference
http://www.learncpp.com/
http://www.java2s.com/Code/Cpp/CatalogCpp.htm

More Related Content

PDF
Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
DOCX
Introduction to object oriented programming concepts
PPT
Defining classes-and-objects-1.0
PPTX
Classes and objects1
PPTX
[OOP - Lec 13,14,15] Constructors / Destructor and its Types
PPT
Java: Objects and Object References
PPTX
Object Oriended Programming with Java
PPT
Unidad o informatica en ingles
Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
Introduction to object oriented programming concepts
Defining classes-and-objects-1.0
Classes and objects1
[OOP - Lec 13,14,15] Constructors / Destructor and its Types
Java: Objects and Object References
Object Oriended Programming with Java
Unidad o informatica en ingles

What's hot (19)

PPT
Object and Classes in Java
PDF
Lect 1-java object-classes
PPTX
Class introduction in java
PPT
object oriented programming language by c++
PPT
Class and object in C++
PPTX
Constructors and destructors
PPTX
Classes and objects
PDF
Class and object in C++ By Pawan Thakur
PPS
Introduction to class in java
PPTX
[OOP - Lec 20,21] Inheritance
PPS
Introduction to CSharp
PPT
Introduction to csharp
PPT
Introduction To Csharp
PPT
Introduction to csharp
PPT
Classes & objects new
PDF
How to write you first class in c++ object oriented programming
PPTX
Chapter2 array of objects
PPTX
Constructor & destructor
Object and Classes in Java
Lect 1-java object-classes
Class introduction in java
object oriented programming language by c++
Class and object in C++
Constructors and destructors
Classes and objects
Class and object in C++ By Pawan Thakur
Introduction to class in java
[OOP - Lec 20,21] Inheritance
Introduction to CSharp
Introduction to csharp
Introduction To Csharp
Introduction to csharp
Classes & objects new
How to write you first class in c++ object oriented programming
Chapter2 array of objects
Constructor & destructor
Ad

Viewers also liked (12)

PDF
PDF
05 graph
PDF
JavaScript, the good parts + syntactic sugar = CoffeeScript
PDF
01 basics and stl
PPT
C++ Advanced
ODP
Talk on Standard Template Library
PDF
04 maths
PDF
Front End Development - Beyond Javascript (Robin Cannon)
PDF
Top 10 things a fresh programmer should know - Dao Ngoc Khanh
PDF
02 greedy, d&c, binary search
PDF
Security in the Internet of Things
PDF
Becoming a Better Programmer
05 graph
JavaScript, the good parts + syntactic sugar = CoffeeScript
01 basics and stl
C++ Advanced
Talk on Standard Template Library
04 maths
Front End Development - Beyond Javascript (Robin Cannon)
Top 10 things a fresh programmer should know - Dao Ngoc Khanh
02 greedy, d&c, binary search
Security in the Internet of Things
Becoming a Better Programmer
Ad

Similar to Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK (20)

PPTX
CHAPTER -4-class and structure.pptx
PPT
Data structure and problem solving ch01.ppt
PPT
2 lesson 2 object oriented programming in c++
PPTX
object oriented programming-classes and objects.pptx
PPT
Object and class presentation
PDF
2 BytesC++ course_2014_c5_ structures and classes
PPTX
Pf cs102 programming-10 [structs]
PPT
Oops lecture 1
PPT
Savitch ch 10
PDF
PPT
Lecture number three Structures (1).ppt
PPT
Savitch Ch 10
PDF
Object Oriented Programming (OOP) using C++ - Lecture 1
PPTX
Classes and objects
PPT
CHAPTER-7 C++ PROGRAMMING ( STRUCTURE IN C++)
PPTX
Structured Languages
PPTX
class c++
PPT
PPTX
PPTX
Class and objects
CHAPTER -4-class and structure.pptx
Data structure and problem solving ch01.ppt
2 lesson 2 object oriented programming in c++
object oriented programming-classes and objects.pptx
Object and class presentation
2 BytesC++ course_2014_c5_ structures and classes
Pf cs102 programming-10 [structs]
Oops lecture 1
Savitch ch 10
Lecture number three Structures (1).ppt
Savitch Ch 10
Object Oriented Programming (OOP) using C++ - Lecture 1
Classes and objects
CHAPTER-7 C++ PROGRAMMING ( STRUCTURE IN C++)
Structured Languages
class c++
Class and objects

Recently uploaded (20)

PPTX
OOP with Java - Java Introduction (Basics)
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PPTX
Construction Project Organization Group 2.pptx
PDF
PPT on Performance Review to get promotions
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
web development for engineering and engineering
PDF
Digital Logic Computer Design lecture notes
PPTX
Welding lecture in detail for understanding
PPT
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
bas. eng. economics group 4 presentation 1.pptx
PDF
Well-logging-methods_new................
PPTX
additive manufacturing of ss316l using mig welding
OOP with Java - Java Introduction (Basics)
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
Construction Project Organization Group 2.pptx
PPT on Performance Review to get promotions
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Internet of Things (IOT) - A guide to understanding
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Embodied AI: Ushering in the Next Era of Intelligent Systems
Foundation to blockchain - A guide to Blockchain Tech
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
web development for engineering and engineering
Digital Logic Computer Design lecture notes
Welding lecture in detail for understanding
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
Lecture Notes Electrical Wiring System Components
bas. eng. economics group 4 presentation 1.pptx
Well-logging-methods_new................
additive manufacturing of ss316l using mig welding

Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK

  • 1. ACA Summer School 2014 Advanced C++ Pankaj Prateek ACA, CSE, IIT Kanpur June 23, 2014
  • 2. Course website: http: //www.cse.iitk.ac.in/users/aca/sumschool2014.html Evaluation End Sem - 50% Assignments / In-class quiz - 50% Timings: M-F 1430 - 1600 hrs
  • 3. Prerequisites A good command over any programming language preferably C/C++ Pointers Structures
  • 4. Structures How do you store the details of a person? char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; Information is not grouped in any way. To pass your information to a function, you would have to pass each variable independently. If wanted to store information about many people, would have to declare arrays.
  • 5. Structures How do you store the details of a person? char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; Information is not grouped in any way. To pass your information to a function, you would have to pass each variable independently. If wanted to store information about many people, would have to declare arrays.
  • 6. Structures How do you store the details of a person? char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; Information is not grouped in any way. To pass your information to a function, you would have to pass each variable independently. If wanted to store information about many people, would have to declare arrays.
  • 7. Structures How do you store the details of a person? char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; Information is not grouped in any way. To pass your information to a function, you would have to pass each variable independently. If wanted to store information about many people, would have to declare arrays.
  • 8. Structures How do you store the details of a person? char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; Information is not grouped in any way. To pass your information to a function, you would have to pass each variable independently. If wanted to store information about many people, would have to declare arrays.
  • 9. Structures C++ allows to create own user-defined data types to aggregate different variables : structs Structure declaration struct Person{ char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; }; //DO NOT forget a semicolon Now person structure can be used as a built-in variable.
  • 10. Structures C++ allows to create own user-defined data types to aggregate different variables : structs Structure declaration struct Person{ char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; }; //DO NOT forget a semicolon Now person structure can be used as a built-in variable.
  • 11. Structures C++ allows to create own user-defined data types to aggregate different variables : structs Structure declaration struct Person{ char strName [20]; int nBirthYear; int nBirthMonth; int nBirthDay; int nHeight; }; //DO NOT forget a semicolon Now person structure can be used as a built-in variable.
  • 12. Structures Usage struct Person p1; struct Person p2; Accessing Members: p1.name = ‘‘pankaj ’’; p1.nBirthDay = 20; p2.name = ‘‘Rahul ’’;
  • 13. Structures Usage struct Person p1; struct Person p2; Accessing Members: p1.name = ‘‘pankaj ’’; p1.nBirthDay = 20; p2.name = ‘‘Rahul ’’;
  • 14. Structures No memory is allocated in structure declaration Size of a structure is the sum of sizes of it elements Can pass entire structures to functions void PrintInfo(struct Person p) { cout << ‘‘Name: ’’ << p.name <<endl; cout << ‘‘bDay: ’’ << p.nBirthDay <<endl; } int main () { struct Person p1; p1.name = ‘‘Pankaj ’’; p1.nBirthDay = 20; PrintInfo(p1); }
  • 15. Structures No memory is allocated in structure declaration Size of a structure is the sum of sizes of it elements Can pass entire structures to functions void PrintInfo(struct Person p) { cout << ‘‘Name: ’’ << p.name <<endl; cout << ‘‘bDay: ’’ << p.nBirthDay <<endl; } int main () { struct Person p1; p1.name = ‘‘Pankaj ’’; p1.nBirthDay = 20; PrintInfo(p1); }
  • 16. Structures No memory is allocated in structure declaration Size of a structure is the sum of sizes of it elements Can pass entire structures to functions void PrintInfo(struct Person p) { cout << ‘‘Name: ’’ << p.name <<endl; cout << ‘‘bDay: ’’ << p.nBirthDay <<endl; } int main () { struct Person p1; p1.name = ‘‘Pankaj ’’; p1.nBirthDay = 20; PrintInfo(p1); }
  • 17. Structures Always have to use the word “struct” No explicit connection between members of a structure and the functions manipulating them Cannot be treated as built-in types (c1 + c2 is not valid for instances of “struct complex”) Data hiding is not permitted (Why do we need this?) All members of a structure are by defaut “public” (will be discussed later)
  • 18. Structures Always have to use the word “struct” No explicit connection between members of a structure and the functions manipulating them Cannot be treated as built-in types (c1 + c2 is not valid for instances of “struct complex”) Data hiding is not permitted (Why do we need this?) All members of a structure are by defaut “public” (will be discussed later)
  • 19. Structures Always have to use the word “struct” No explicit connection between members of a structure and the functions manipulating them Cannot be treated as built-in types (c1 + c2 is not valid for instances of “struct complex”) Data hiding is not permitted (Why do we need this?) All members of a structure are by defaut “public” (will be discussed later)
  • 20. Structures Always have to use the word “struct” No explicit connection between members of a structure and the functions manipulating them Cannot be treated as built-in types (c1 + c2 is not valid for instances of “struct complex”) Data hiding is not permitted (Why do we need this?) All members of a structure are by defaut “public” (will be discussed later)
  • 21. Structures Always have to use the word “struct” No explicit connection between members of a structure and the functions manipulating them Cannot be treated as built-in types (c1 + c2 is not valid for instances of “struct complex”) Data hiding is not permitted (Why do we need this?) All members of a structure are by defaut “public” (will be discussed later)
  • 22. Classes Extension of structures Class Definition class class_name { private: variable declarations; function declarations; public: variable declarations; function declarations; }; //DO NOT forget the semicolon
  • 23. Classes Extension of structures Class Definition class class_name { private: variable declarations; function declarations; public: variable declarations; function declarations; }; //DO NOT forget the semicolon
  • 24. Class: Example Example class item { private: int number; // variable declarations float cost; // private by default! public: // function declarations through prototypes void getData(int a, float b); void putData(void ); }
  • 25. Class No memory allocated for a class definiton. It is only a “template”, like a definition of a structure
  • 26. Class: Public and Private Private members are not directly accessible outside the class. They are “hidden” from the outside world. The only way to access them is by using public functions (if defined) which manipulate them. Public members can be accessed using the dot operator (member selection operator). Eg. student.name, item.getData()
  • 27. Class: Public and Private Private members are not directly accessible outside the class. They are “hidden” from the outside world. The only way to access them is by using public functions (if defined) which manipulate them. Public members can be accessed using the dot operator (member selection operator). Eg. student.name, item.getData()
  • 28. Class: Objects Class, like a structure definition, is a user-defined data type without any concrete existance. A concrete instance of a class is an object. Memory is allocated for every object that is created. An independent new set of variables is created for each object. Public members can be accessed by using the dot operator on the object while private members cannot be accessed directly.
  • 29. Class: Objects Class, like a structure definition, is a user-defined data type without any concrete existance. A concrete instance of a class is an object. Memory is allocated for every object that is created. An independent new set of variables is created for each object. Public members can be accessed by using the dot operator on the object while private members cannot be accessed directly.
  • 30. Class: Objects Class, like a structure definition, is a user-defined data type without any concrete existance. A concrete instance of a class is an object. Memory is allocated for every object that is created. An independent new set of variables is created for each object. Public members can be accessed by using the dot operator on the object while private members cannot be accessed directly.
  • 31. Class: Objects Class, like a structure definition, is a user-defined data type without any concrete existance. A concrete instance of a class is an object. Memory is allocated for every object that is created. An independent new set of variables is created for each object. Public members can be accessed by using the dot operator on the object while private members cannot be accessed directly.
  • 32. Class: Objects Class, like a structure definition, is a user-defined data type without any concrete existance. A concrete instance of a class is an object. Memory is allocated for every object that is created. An independent new set of variables is created for each object. Public members can be accessed by using the dot operator on the object while private members cannot be accessed directly.
  • 33. Class: Objects Object Creation Just like variable declaration Memory is allocated for every object that is created Example: item a; item b,c,d;
  • 34. Class: Objects Object Creation Just like variable declaration Memory is allocated for every object that is created Example: item a; item b,c,d;
  • 35. Class: Objects Object Creation Just like variable declaration Memory is allocated for every object that is created Example: item a; item b,c,d;
  • 36. Class: Objects Object Creation Just like variable declaration Memory is allocated for every object that is created Example: item a; item b,c,d;
  • 37. Class: Function definitions Outside the class class Employee { int empno , salary; public: void set(int roll , int sal); }; void employee ::set(int roll , int sal) { empno = roll; salary = sal; }
  • 38. Class: Function definitions Outside the class class Employee { int empno , salary; public: void set(int roll , int sal); }; void employee ::set(int roll , int sal) { empno = roll; salary = sal; }
  • 39. Class: Function definitions Inside the class class Employee { int empno , salary; public: void set(int roll , int sal) { empno = roll; salary = sal; } };
  • 40. Class: Function definitions Inside the class class Employee { int empno , salary; public: void set(int roll , int sal) { empno = roll; salary = sal; } };
  • 41. Important Properties Invoking other member functions from inside a member function does not require explicit use of the object Array size, if used inside classes, need to be determined at compile time (for dynamic arrays, with size to be determined at run time, “new” operator is used inside a constructor, will be discussed later) Arrays of objects are allowed (stored contiguously). Objects can be used as members of some other class in nested fashion. Objects, just like built-in types, can be return type of functions. Private functions and variables can only be accessed from within the class.
  • 42. Important Properties Invoking other member functions from inside a member function does not require explicit use of the object Array size, if used inside classes, need to be determined at compile time (for dynamic arrays, with size to be determined at run time, “new” operator is used inside a constructor, will be discussed later) Arrays of objects are allowed (stored contiguously). Objects can be used as members of some other class in nested fashion. Objects, just like built-in types, can be return type of functions. Private functions and variables can only be accessed from within the class.
  • 43. Important Properties Invoking other member functions from inside a member function does not require explicit use of the object Array size, if used inside classes, need to be determined at compile time (for dynamic arrays, with size to be determined at run time, “new” operator is used inside a constructor, will be discussed later) Arrays of objects are allowed (stored contiguously). Objects can be used as members of some other class in nested fashion. Objects, just like built-in types, can be return type of functions. Private functions and variables can only be accessed from within the class.
  • 44. Important Properties Invoking other member functions from inside a member function does not require explicit use of the object Array size, if used inside classes, need to be determined at compile time (for dynamic arrays, with size to be determined at run time, “new” operator is used inside a constructor, will be discussed later) Arrays of objects are allowed (stored contiguously). Objects can be used as members of some other class in nested fashion. Objects, just like built-in types, can be return type of functions. Private functions and variables can only be accessed from within the class.
  • 45. Important Properties Invoking other member functions from inside a member function does not require explicit use of the object Array size, if used inside classes, need to be determined at compile time (for dynamic arrays, with size to be determined at run time, “new” operator is used inside a constructor, will be discussed later) Arrays of objects are allowed (stored contiguously). Objects can be used as members of some other class in nested fashion. Objects, just like built-in types, can be return type of functions. Private functions and variables can only be accessed from within the class.
  • 46. Classes Problem Consider a class “car” which has the carNo, carModel, carMake fields and relevant functions to modify them. You have to count the number of objects of the class created. How do you do it?
  • 47. Classes Problem Consider a class “car” which has the carNo, carModel, carMake fields and relevant functions to modify them. You have to count the number of objects of the class created. How do you do it?
  • 48. Classes Problem Consider a class “car” which has the carNo, carModel, carMake fields and relevant functions to modify them. You have to count the number of objects of the class created. How do you do it?
  • 49. Static Members class item { static int count; // rest of class definition }; int item :: count;
  • 50. Static Members Properties Every static member needs to be defined outside the class as well. Only one copy of the static variable is shared among all objects of the class. Visible only within the class but exists for the lifetime of the program. No object instantiation is required to access static members.
  • 51. Static Members Properties Every static member needs to be defined outside the class as well. Only one copy of the static variable is shared among all objects of the class. Visible only within the class but exists for the lifetime of the program. No object instantiation is required to access static members.
  • 52. Static Members Properties Every static member needs to be defined outside the class as well. Only one copy of the static variable is shared among all objects of the class. Visible only within the class but exists for the lifetime of the program. No object instantiation is required to access static members.
  • 53. Static Members Properties Every static member needs to be defined outside the class as well. Only one copy of the static variable is shared among all objects of the class. Visible only within the class but exists for the lifetime of the program. No object instantiation is required to access static members.
  • 54. Static Members Properties Every static member needs to be defined outside the class as well. Only one copy of the static variable is shared among all objects of the class. Visible only within the class but exists for the lifetime of the program. No object instantiation is required to access static members.
  • 55. Memory Allocation of Objects For member functions and static variables, memory is allocated when the class is defined, all objects of the class share the same function code and static variables (every class does not get its own copy). “this” pointer is implicitly passed so that the function code is executed on the correct class instance. For variables, memory is allocated when the object is defined. Each instance gets its own set of variables.
  • 56. Memory Allocation of Objects For member functions and static variables, memory is allocated when the class is defined, all objects of the class share the same function code and static variables (every class does not get its own copy). “this” pointer is implicitly passed so that the function code is executed on the correct class instance. For variables, memory is allocated when the object is defined. Each instance gets its own set of variables.
  • 57. Class: Friend Shared functions among multiple classes Properties: Can access private members of the class Often used in operator overloading Not in the scope of the class. Cannot be called using an object of the class. Can be invoked like a normal function Cannot access members of a class directly without an object of the class
  • 58. Class: Friend Shared functions among multiple classes Properties: Can access private members of the class Often used in operator overloading Not in the scope of the class. Cannot be called using an object of the class. Can be invoked like a normal function Cannot access members of a class directly without an object of the class
  • 59. Class: Friend Shared functions among multiple classes Properties: Can access private members of the class Often used in operator overloading Not in the scope of the class. Cannot be called using an object of the class. Can be invoked like a normal function Cannot access members of a class directly without an object of the class
  • 60. Class: Friend Shared functions among multiple classes Properties: Can access private members of the class Often used in operator overloading Not in the scope of the class. Cannot be called using an object of the class. Can be invoked like a normal function Cannot access members of a class directly without an object of the class
  • 61. Class: Friend Shared functions among multiple classes Properties: Can access private members of the class Often used in operator overloading Not in the scope of the class. Cannot be called using an object of the class. Can be invoked like a normal function Cannot access members of a class directly without an object of the class
  • 62. Class: Friend Shared functions among multiple classes Properties: Can access private members of the class Often used in operator overloading Not in the scope of the class. Cannot be called using an object of the class. Can be invoked like a normal function Cannot access members of a class directly without an object of the class
  • 63. Class: Friend Shared functions among multiple classes Properties: Can access private members of the class Often used in operator overloading Not in the scope of the class. Cannot be called using an object of the class. Can be invoked like a normal function Cannot access members of a class directly without an object of the class
  • 64. Class: Friend Properties: (cont. . . ) Can be declared as either private or public without changing the meaning Objects can be passed to the function by value or by reference A class can be defined to be the friend of another class. In that case, all member functions of one class are friends of the other class
  • 65. Class: Friend Properties: (cont. . . ) Can be declared as either private or public without changing the meaning Objects can be passed to the function by value or by reference A class can be defined to be the friend of another class. In that case, all member functions of one class are friends of the other class
  • 66. Class: Friend Properties: (cont. . . ) Can be declared as either private or public without changing the meaning Objects can be passed to the function by value or by reference A class can be defined to be the friend of another class. In that case, all member functions of one class are friends of the other class
  • 67. Class: Friend Properties: (cont. . . ) Can be declared as either private or public without changing the meaning Objects can be passed to the function by value or by reference A class can be defined to be the friend of another class. In that case, all member functions of one class are friends of the other class
  • 68. References The C++ Programming Language - Bjarne Stroustrup Object Oriented Programming with C++ - E Balaguruswamy http://www.cplusplus.com/reference http://www.learncpp.com/ http://www.java2s.com/Code/Cpp/CatalogCpp.htm