ACA Summer School 2014
Advanced C++
Pankaj Prateek
ACA, CSE, IIT Kanpur
June 24, 2014
Pointers Revisited
Pointers are derived data types that contain memory address
of some other variable
Dereferencing a poin...
Pointers Revisited
Pointers are derived data types that contain memory address
of some other variable
Dereferencing a poin...
Pointers Revisited
Pointers are derived data types that contain memory address
of some other variable
Dereferencing a poin...
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to prope...
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to prope...
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to prope...
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to prope...
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to prope...
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to prope...
Class: this pointer
this pointer is used to represent the object for which the
current member function was called
Automati...
Class: this pointer
this pointer is used to represent the object for which the
current member function was called
Automati...
Class: this pointer
this pointer is used to represent the object for which the
current member function was called
Automati...
Class: this pointer
class Person {
double height;
public:
person& taller(person& x) {
if (x.height > height)
return x;
els...
Classes without constructors
We have been using member functions to set the values of
member variables
class item {
int nu...
Classes without constructors
We have been using member functions to set the values of
member variables
class item {
int nu...
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors...
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors...
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors...
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors...
Class: Constructors
class item {
int number;
int cost;
public:
item(void) { // Constructor
number = cost = 0;
}
void getVa...
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really s...
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really s...
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really s...
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really s...
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really s...
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really s...
Class: Default Constructor
Even if when a constructor has not been defined, the compiler
will define a default constructor. ...
Class: Default Constructor
Even if when a constructor has not been defined, the compiler
will define a default constructor. ...
Class: Default Constructor
class item {
int number , cost;
public:
item (); // default
item(int itemNum , int itemCost) {
...
Class: Multiple Constructors
Which constructor is called depends on the constructor
signature.
Class: Copy Constructors
Constructors which are used to declare and initialize an object
from another object, most probabl...
Class: Copy Constructors
class item {
int number , cost;
public:
item (); // default
item(int itemNum , int itemCost) {
nu...
Private Members
Why can one access private members of another object in the
definition of the copy constructor?
Access modi...
Private Members
Why can one access private members of another object in the
definition of the copy constructor?
Access modi...
Class: Copy Constructors
The process of Initialization of an object through a copy
cnstructor is known as copy initializat...
Class: Destructors
Special functions like constructors. Destroy objects created by
a constructor
They neither have any inp...
Class: Destructors
Special functions like constructors. Destroy objects created by
a constructor
They neither have any inp...
Class: Destructors
Special functions like constructors. Destroy objects created by
a constructor
They neither have any inp...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
...
Upcoming SlideShare
Loading in...5
×

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

90

Published on

Published in: Engineering, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
90
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK"

  1. 1. ACA Summer School 2014 Advanced C++ Pankaj Prateek ACA, CSE, IIT Kanpur June 24, 2014
  2. 2. Pointers Revisited Pointers are derived data types that contain memory address of some other variable Dereferencing a pointer and pointer arithmetic works exactly in the same way as with structs and built-in types Accessing (Class Pointers): item x(12 ,100); item* ptr = &x; // Ways to access x.getDetails (); ptr ->getDetails (); (*ptr). getDetails (); // All three ways are equivalent
  3. 3. Pointers Revisited Pointers are derived data types that contain memory address of some other variable Dereferencing a pointer and pointer arithmetic works exactly in the same way as with structs and built-in types Accessing (Class Pointers): item x(12 ,100); item* ptr = &x; // Ways to access x.getDetails (); ptr ->getDetails (); (*ptr). getDetails (); // All three ways are equivalent
  4. 4. Pointers Revisited Pointers are derived data types that contain memory address of some other variable Dereferencing a pointer and pointer arithmetic works exactly in the same way as with structs and built-in types Accessing (Class Pointers): item x(12 ,100); item* ptr = &x; // Ways to access x.getDetails (); ptr ->getDetails (); (*ptr). getDetails (); // All three ways are equivalent
  5. 5. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  6. 6. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  7. 7. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  8. 8. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  9. 9. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  10. 10. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  11. 11. Class: this pointer this pointer is used to represent the object for which the current member function was called Automatically passed as an implicit arguement when a member function is called *this is the reference to the object which called the function
  12. 12. Class: this pointer this pointer is used to represent the object for which the current member function was called Automatically passed as an implicit arguement when a member function is called *this is the reference to the object which called the function
  13. 13. Class: this pointer this pointer is used to represent the object for which the current member function was called Automatically passed as an implicit arguement when a member function is called *this is the reference to the object which called the function
  14. 14. Class: this pointer class Person { double height; public: person& taller(person& x) { if (x.height > height) return x; else return *this; } }; Person A, B, tallest; tallest = A.taller(B);
  15. 15. Classes without constructors We have been using member functions to set the values of member variables class item { int number , cost; public: void setValue(int itemNum , int itemCost ); void getValue(void ); }; Classes should allow to use customized definitons in the same way as we use built-in definitions. Initialization and destruction properties are important for this.
  16. 16. Classes without constructors We have been using member functions to set the values of member variables class item { int number , cost; public: void setValue(int itemNum , int itemCost ); void getValue(void ); }; Classes should allow to use customized definitons in the same way as we use built-in definitions. Initialization and destruction properties are important for this.
  17. 17. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  18. 18. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  19. 19. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  20. 20. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  21. 21. Class: Constructors class item { int number; int cost; public: item(void) { // Constructor number = cost = 0; } void getValue(void ); }; int main () { item soap , pencil , pen; soap.getValue (); pencil.getValue (); pen.getValue (); }
  22. 22. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  23. 23. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  24. 24. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  25. 25. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  26. 26. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  27. 27. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  28. 28. Class: Default Constructor Even if when a constructor has not been defined, the compiler will define a default constructor. This constructor does nothing, it is an empty constructor. If some constructors are defined, but they are all non-default, the compiler will not implicitly define a default constructor. This might cause problems. Thus, define a default constructor whenever a non-default constructor is defined.
  29. 29. Class: Default Constructor Even if when a constructor has not been defined, the compiler will define a default constructor. This constructor does nothing, it is an empty constructor. If some constructors are defined, but they are all non-default, the compiler will not implicitly define a default constructor. This might cause problems. Thus, define a default constructor whenever a non-default constructor is defined.
  30. 30. Class: Default Constructor class item { int number , cost; public: item (); // default item(int itemNum , int itemCost) { number = itemNum; cost = itemCost; } }; item pen1 , pen2; item pencil1 (123, 40), pencil2 (123, 10);
  31. 31. Class: Multiple Constructors Which constructor is called depends on the constructor signature.
  32. 32. Class: Copy Constructors Constructors which are used to declare and initialize an object from another object, most probably via a reference to that object.
  33. 33. Class: Copy Constructors class item { int number , cost; public: item (); // default item(int itemNum , int itemCost) { number = itemNum; cost = itemCost; } item(item& temp) { // Accessing private members number = temp.number; cost = temp.cost; } }; item pen1 (123, 40); item pen2 (& pen1 );
  34. 34. Private Members Why can one access private members of another object in the definition of the copy constructor? Access modifiers (private, public) work only at class level and not at object level. Gence two objects of the same class can access each other’s private members without any error!!
  35. 35. Private Members Why can one access private members of another object in the definition of the copy constructor? Access modifiers (private, public) work only at class level and not at object level. Gence two objects of the same class can access each other’s private members without any error!!
  36. 36. Class: Copy Constructors The process of Initialization of an object through a copy cnstructor is known as copy initialization.
  37. 37. Class: Destructors Special functions like constructors. Destroy objects created by a constructor They neither have any input arguement, not a return value. Implicitly called by a compiler when the object goes out of scope.
  38. 38. Class: Destructors Special functions like constructors. Destroy objects created by a constructor They neither have any input arguement, not a return value. Implicitly called by a compiler when the object goes out of scope.
  39. 39. Class: Destructors Special functions like constructors. Destroy objects created by a constructor They neither have any input arguement, not a return value. Implicitly called by a compiler when the object goes out of scope.
  40. 40. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  41. 41. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  42. 42. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  43. 43. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  44. 44. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  45. 45. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  46. 46. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  47. 47. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×