Post on 27-Jul-2015
transcript
Kinan keshkeh
IT Engineering-Damascus University
3rd year
Summer course- 2014
2 bytes team
Welcome !
Hi my friends !! ?
Friends !
Friend functions !
Friend functions
• Declarations : friend returnedtype FuncName(..,…); just in declaration .
• A friend function of a class is not a member function of the class, but it has access to the private members of that class (to both private member variables and private member functions) just as a member function does.
Friend functions
Friend functions
Friend functions
Friend Classes !
Friend Classes
• in the same way that a function can be a friend of a class.
• If the class F is a friend of the class C, then every member function of the class F is a friend of the class C.
Reference !
Reference
• A reference is the name of a storage location.
• You can link more then VariablesName with the same address !!
• robert is another name for bob
Reference
• A reference is the name of a storage location.
• You can link more then VariablesName with the same address !!
• robert is another name for bob
Reference
Reference
Output: 99 42
Reference
Output: 99 42
Reference
Output: 99 42
overloaded operators !
overloaded operators
Overloaded Operators
Like what we took in past lecture + , == , = , - , …..
A little difference in declaration and calling
overloaded operators
overloaded operators as standalone functions
overloading as member functions
overloaded operators
• Overloaded operators as standalone functions :
const ClassName operator +(const ClassName& amount1, const ClassName& amount2);
ClassName m3 = (m1 + m2);
overloaded operators
const ClassName operator +(const ClassName& amount1, const ClassName& amount2);
• (m1 + m2).input( );
• ClassName m3 = (m1 + m2); m3.input( );
False
True
• Overloaded operators as standalone functions :
overloaded operators
const ClassName operator +(const ClassName& amount1, const ClassName& amount2);
• (m1 + m2).input( );
• ClassName m3 = (m1 + m2); m3.input( );
False
True
• Overloaded operators as standalone functions :
overloaded operators
const ClassName operator +(const ClassName& amount1, const ClassName& amount2);
• (m1 + m2).input( );
• ClassName m3 = (m1 + m2); m3.input( );
False
True
• Overloaded operators as standalone functions :
overloaded operators
const ClassName operator +(const ClassName& amount1, const ClassName& amount2);
• & Reference for more efficient( it’s not important)
• Overloaded operators as standalone functions :
overloaded operators
const ClassName operator +(const ClassName& amount1, const ClassName& amount2);
• The same way for ” - ” , “ ++ ”
• Overloaded operators as standalone functions :
overloaded operators
• Overloading as member functions :
const ClassName operator +(const ClassName& amount);
ClassName m3 = (m1 + m2);
From Class members !! (private)
overloaded operators • Overloaded operators as standalone functions :
overloaded operators • Overloaded operators as standalone functions :
overloaded operators • Overloaded operators as standalone functions :
overloaded operators • Overloaded operators as standalone functions :
overloaded operators • Overloaded operators as standalone functions :
overloaded operators
• Overloaded operators as standalone functions :
overloaded operators • Overloaded operators as standalone functions :
Output:
overloaded operators
• Overloading “<<” and “>>” operators:
• Make you use “ cin “ and “ cout” in main() , with Objects !!
• It’s better to define them as friends functions !
class Class_Name { . . . public: . . . friend istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2); friend ostream& operator <<(ostream& Parameter_3,const Class_Name& Parameter_4);
overloaded operators
• Overloading “<<” and “>>” operators:
istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2) { . . . return Parameter_1 } ostream& operator <<(ostream& Parameter_3, const Class_Name& Parameter_4) { . . . return Parameter_3 }
class Class_Name { . . . public: . . . friend istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2); friend ostream& operator <<(ostream& Parameter_3,const Class_Name& Parameter_4);
overloaded operators
• Overloading “<<” and “>>” operators:
istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2) { . . . return Parameter_1 } ostream& operator <<(ostream& Parameter_3, const Class_Name& Parameter_4) { . . . return Parameter_3 }
Do the input operations with Parameter_1 “ >>“
class Class_Name { . . . public: . . . friend istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2); friend ostream& operator <<(ostream& Parameter_3,const Class_Name& Parameter_4);
overloaded operators
• Overloading “<<” and “>>” operators:
istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2) { . . . return Parameter_1 } ostream& operator <<(ostream& Parameter_3, const Class_Name& Parameter_4) { . . . return Parameter_3 }
Then return Parameter_1
class Class_Name { . . . public: . . . friend istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2); friend ostream& operator <<(ostream& Parameter_3,const Class_Name& Parameter_4);
overloaded operators
• Overloading “<<” and “>>” operators:
istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2) { . . . return Parameter_1 } ostream& operator <<(ostream& Parameter_3, const Class_Name& Parameter_4) { . . . return Parameter_3 }
Do the output operations and put them in Parameter_3“ <<“
class Class_Name { . . . public: . . . friend istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2); friend ostream& operator <<(ostream& Parameter_3,const Class_Name& Parameter_4);
overloaded operators
• Overloading “<<” and “>>” operators:
istream& operator >>(istream& Parameter_1,Class_Name& Parameter_2) { . . . return Parameter_1 } ostream& operator <<(ostream& Parameter_3, const Class_Name& Parameter_4) { . . . return Parameter_3 }
Then return Parameter_3
overloaded operators • Overloading “<<” and “>>” operators:
overloaded operators • Overloading “<<” and “>>” operators:
overloaded operators • Overloading “<<” and “>>” operators:
overloaded operators
• Overloading “<<” and “>>” operators:
Output:
overloaded operators
• Overloading “++” , “--” and “ [] ” operators:
overloaded operators • Overloading “++” , “--” operators:
overloaded operators • Overloading “++” , “--” operators:
overloaded operators • Overloading “++” , “--” operators:
overloaded operators
Output:
• Overloading “++” , “--” operators:
overloaded operators • Overloading “ [] “ operator:
overloaded operators • Overloading “ [] “ operator:
overloaded operators • Overloading “ [] “ operator:
Output:
That’s for today
Enjoy and play !!
2 bytes team
Group : group link
Mobile phone- Kinan : 0994385748
Facebook account : kinan’s account
2 bytes team