Object-Oriented Programming In C++: Operator Overloading
Submitted by PhoeniciansSy on Tuesday, September 23, 2014 - 10:40.
1. Introduction.
2. Basic Principles in Operator Overloading.
Introduction:
Calling function in some classes may be annoying, especially mathematical classes, for example:- a = 2 + 3
- assign(a, add(2,3));
Basic Principles in Operator Overloading:
When using operator overloading, you have to: - use it to increase readability of your program. - avoid exaggeration in use. To use operator overloading, follow those steps: 1- write the definition of your function as usual. 2- your function name is consist of operator keyword Followed by the operation symbol which you overload. For example to overloading addition operation (+) your function name will be :operator+It is possible to overloading almost all operators in C++. This list contains all operators we can overloading :
+ - * / % ^ & | ~ ! = > += -= *= /= %= ^= &= |= >> >>= = == != = >= && || ++ -- ->* , -> [] () new delete new[] delete[]In the following example, we will overload and >> operators:
- // Overloading the stream-insertion and
- // stream-extraction operators.
- #include <iostream>
- using std::cout;
- using std::cin;
- using std::endl;
- using std::ostream;
- using std::istream;
- #include <iomanip>
- using std::setw;
- class PhoneNumber
- {
- friend ostream &operator<<( ostream&, const PhoneNumber& );
- friend istream &operator>>( istream&, PhoneNumber &);
- private:
- char areaCode[ 4 ]; // 3-digit area code and null
- char exchange[ 4 ]; // 3-digit exchange and null
- char line[ 5 ]; // 4-digit line and null
- };
- // Overloaded stream-insertion operator (cannot be
- // a member function if we would like to invoke it with
- //cout <<somePhoneNumber;).
- ostream &operator<<( ostream &output, constPhoneNumber &num )
- {
- output << "(" << num.areaCode << ") "
- << num.exchange << "-" << num.line;
- return output; // enables cout << a << b << c;
- }
- istream &operator>>( istream &input, PhoneNumber &num )
- {
- input.ignore(); // skip (
- input >> setw( 4 ) >> num.areaCode; // input area code
- input.ignore( 2 ); // skip ) and space
- input >> setw( 4 ) >> num.exchange; // input exchange
- input.ignore(); // skip dash (-)
- input >>setw( 5 ) >> num.line; // input line
- return input; // enables cin >> a >> b >> c;
- }
- int main()
- {
- PhoneNumber phone; // create object phone
- cout << "Enter phone number in the form (123) 456-7890:\n";
- // cin >> phone invokes operator>> function by
- // issuing the call operator>>(cin, phone ).
- cin >> phone;
- // cout<< phone invokes operator<< function by
- // issuing the call operator<<(cout, phone ).
- cout << "The phone number entered was: " << phone << endl;
- return 0;
- }
Enter phone number in the form (123) 456-7890: (800) 555-1212 The phone number entered was: (800) 555-1212Note: You can find the full source code of this example in code.zip file.
Add new comment
- 157 views