Introduction to Programming Lecture 39
Copy Constructor
Review Pointers Pointers References References Memory Allocation Memory Allocation
Pointers A pointer is a special type of variable that contain a memory address
Void Pointer Void Pointer Pointer to an Integer Pointer to an Integer Pointer to a Character Pointer to a Character Pointer to a Float Pointer to a Float Pointer to Objects Pointer to Objects
References
&
const
Dynamic Memory Allocation
Native Operator new new delete delete
int *p ; p = new int ; delete p ; Dynamic Memory Allocation
int *p ; p = new int [ 10 ] ; delete [ ] p ; Dynamic Memory Allocation
class Matrix { private : int * m ; int row, col ; public : Matrix ( int rows, int cols ) Matrix ( int rows, int cols ) { m = new int [ rows * cols ] ; } } ; Example
delete [ ] m ;
Assignment
int i = 0 ; //Initialization int i ; i = 0 ; //Assignment
Matrix m1, m2 ; …… m2 = m1 ; m2 = m1 ; //Assignment Statement
Member to Member Assignment
m2 = m1
0xefffdad0 mx Pointing to the same region in memory int *m of m1 0xefffdad0 int *m of m2
0xefffdad0 mx Pointing to the same region in memory int *m of m1 0xefffdad0 int *m of m2
Copy Constructor
Call by value
Deep Copy Shallow Copy
Matrix ( Matrix & ) ;
Example class String { char * c ; char * c ; public : public : void copy ( char * s ) ; String ( char * data ) ; void print ( ) ; // etc. // 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 Review of pointers –Dynamic memory allocation new new Delete Delete For memory allocation in classes we must provide For memory allocation in classes we must provide –Constructor –Copy constructor –Assignment operator –destructor