0% found this document useful (0 votes)
34 views31 pages

Introduction To Programming

This document discusses pointers, references, and memory allocation in C++. It covers pointers to different data types, void pointers, and dynamic memory allocation using new and delete. It also discusses copy constructors, the difference between shallow and deep copying, and how to properly handle dynamic memory when objects are copied or assigned by providing a copy constructor, assignment operator, and destructor. The key rules covered are that for classes with dynamic memory allocation, developers must define a copy constructor, write an assignment operator, and provide a destructor.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views31 pages

Introduction To Programming

This document discusses pointers, references, and memory allocation in C++. It covers pointers to different data types, void pointers, and dynamic memory allocation using new and delete. It also discusses copy constructors, the difference between shallow and deep copying, and how to properly handle dynamic memory when objects are copied or assigned by providing a copy constructor, assignment operator, and destructor. The key rules covered are that for classes with dynamic memory allocation, developers must define a copy constructor, write an assignment operator, and provide a destructor.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 31

Introduction to Programming

Lecture 39
Copy
Constructor
Review
 Pointers
 References

 Memory Allocation
Pointers
A pointer is a special type of
variable that contain a memory
address
 Void Pointer
 Pointer to an Integer
 Pointer to a Character
 Pointer to a Float
 Pointer to Objects
References
Dynamic
Memory
Allocation
Native Operator

 new
 delete
Dynamic Memory Allocation

int *p ;
p = new int ;
delete p ;
Dynamic Memory Allocation

int *p ;
p = new int [ 10 ] ;
delete [ ] p ;
Example
class Matrix
{
private :
int * m ;
int row , col ;
public :
Matrix ( int rows , int cols )
{
m = new int [ rows * cols ] ;
}
};
delete [ ] m ;
Assignment
int i = 0 ;
//Initialization
int i ;
i = 0 ; //Assignment
Matrix m1 , m2 ;
……
m2 = m1 ;
//Assignment Statement
Member to
Member
Assignment
m2 = m1
Pointing to the same
int *m of m1
region in memory
0xefffdad0
mx

int *m of m2
0xefffdad0
Pointing to the same
int *m of m1
region in memory
0xefffdad0
mx

int *m of m2
0xefffdad0
Copy
Constructor
Call by
value
Shallow
Deep Copy
Copy
Matrix ( Matrix & ) ;
class String
Example
{
char * c ;
public :
void copy ( char * s ) ;
String ( char * data ) ;
void print ( ) ;
// etc.
};
Example
String s1 ( “test1” ) ;

String s2 = s1 ;
s1.copy ( “this is a test” ) ;
s2.print ( ) ;
int i ;
i = 10 ;
i=i;
Matrix m2 ( m1 ) ;
Matrix m2 = m1 ;
Rules
For dynamic memory allocation
1. Define copy constructor

2. Write assignment operator

3. Provide destructor
What have we covered today
 Review of pointers
– Dynamic memory allocation
 new
 Delete
 For memory allocation in classes we must provide
– Constructor
– Copy constructor
– Assignment operator
– destructor

You might also like