Upload
vankhanh
View
215
Download
0
Embed Size (px)
Citation preview
OBJECT-ORIENTED PROGRAMMING
CONCEPTS-CLASSES IV
KOM3191 Object-Oriented Programming
1 KOM3191 Object Oriented Programming | Dr Muharrem Mercimek
Objects as members of Classes
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek 5
Employee.h
Objects as members of Classes
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek 6
Employee.cpp
• Class Date does not provide a constructor
that receives a parameter of type Date.
• The compiler provides each class with a
default copy constructor. Each data
member is copied. birthDate=dateOfBirth;
hireDate=dateOfHire;
• If birthDate and hireDate are not const
parameters,
• then default memberwise assignment can
be used.
• Again no definition of such a constructor by
the user
Objects as members of Classes
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek 7
Employee.cpp
A Deeper Look at
Classes
8
Objects as members of Classes
Default Member-wise Assignment
• Many classes must provide their own assignment operator
• To intelligently assign one object to another
• More about assignment of objects to each other when we get to Operator Overloading
• The '=' operator can be overloaded, just like any other
Copy Constructor • A constructor that copies another object of the same type
• Compiler provides a default copy constructor
• Copies each member of the original object into the corresponding member of the new object
• i.e., member-wise assignment
• Enables pass-by-value for objects • Used to copy original object’s values into new object to be passed to a function or
returned from a function
• Many classes must provide an explicit Copy Constructor
• To intelligently copy one object to another
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek
Objects as members of Classes
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek 10
test_Employee.cpp
11
friend Function of a Class
Ordinary Member Functions:
1. Function can access the private members of the class
2. Function is in the scope of the class
3. Function must be invoked on a specific object of the class – e.g.,
ptr -> func()
obj.func()
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek
12
friend Function of a Class
• Defined outside that class’s scope.
• Not a member function of that class.
• Has right to access non-public and public members of that class.
• Often appropriate when a member function cannot be used for certain operations.
• Can enhance performance.
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek
13
friend Functions and friend Classes
• To declare a function as a friend of a class:–
• Provide the function prototype in the class definition preceded by keyword friend
• To declare a class as a friend of another class:
• Place a declaration of the form
• friend class ClassTwo; in the definition of class ClassOne
• All member functions of class ClassTwo are friends of class ClassOne
• Friendship is granted, not taken.
• For class B to be a friend of class A, class A must explicitly declare that class B is its friend.
• Friendship relation is neither symmetric nor transitive
• If class A is a friend of class B, and class B is a friend of class C, cannot infer that
• class B is a friend of class A,
• class C is a friend of class B,
• class A is a friend of class C.
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek
friend Functions and friend Classes
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek 14
friend function declaration (can
appear anywhere in the class)
friend function can modify
Count’s private data
Calling a friend function; note that
we pass the Count object to the
function
15
this Pointer
• Member functions know which object’s data members to manipulate
• Every object has access to its own address through a pointer called this (a C++
keyword)
• An object’s this pointer is not part of the object itself
• The this pointer is passed (by the compiler) as an implicit argument to each of the
object’s non-static member functions
• Objects may use the this pointer implicitly or explicitly.
• this is used implicitly when accessing members directly.
• It is used explicitly when using keyword this.
• Type of the this pointer depends on
• type of the object, and
• whether member function is declared const.
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek
16
this Pointer
Implicitly using the this pointer to access member x
Explicitly using the this pointer to access member x
Using the dereferenced this pointer and the dot operator
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek
17
Cascaded member-function calls
• Multiple functions are invoked in the same statement.
• Enabled by member functions returning the dereferenced this pointer.
Time t;
t.setHour(15).setMinute( 30 ).setSecond( 22 );
Time& Time::setHour(int hr)
{
hour=hr;
return *this;
}
KOM3191 Object Oriented Programming | Dr Muharrem Mercimek