









Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Various aspects of operator overloading in c++ including the use of friend functions, friend operator functions, global operator overloading, and special forms of operators. It covers unary and binary operators, prefix and postfix forms, and conversion operators.
Typology: Slides
1 / 17
This page cannot be seen from the preview
Don't miss anything!










} Is a friend function necessary in this case?
No because LH operand is an instance of the class.
Prefix Overloaded Function -- Example
class number{
int n;
public:
number(int x):n(x){}; //Constructor
//prefix operator -- unary
number operator++();
};
number number::operator++(){
n++; return *this;}
main(){
number one(10); //one.n = 10
++one; //one.n = 11
}
Postfix Overloaded Function -- Example
with a Default Value of 0. When specifying an overloaded operator for the postfix form of the increment or decrement operator, the additional argument
must be of type int; specifying any other type generates an error.
class number{
int n;
public:
number(int x):n(x){}; //Constructor
//postfix operator -- binary -- int argument
number operator++(int);
};
number number::operator++(int y)
{if (y != 0) n += y; else n++; return *this;}
Overloading Stream-Insertion and Stream-Extraction Operators
31 output << "(" << num.areaCode << ") "
32 << num.exchange << "-" << num.line;
33 return output; // enables cout << a << b << c;
34 }
35
36 istream &operator>>( istream &input, PhoneNumber &num )
37 {
38 input.ignore(); // skip (
39 input >> setw( 4 ) >> num.areaCode; // input area code
40 input.ignore( 2 ); // skip ) and space
41 input >> setw( 4 ) >> num.exchange; // input exchange
42 input.ignore(); // skip dash (-)
43 input >> setw( 5 ) >> num.line; // input line
44 return input; // enables cin >> a >> b >> c;
45 }
46
47 int main()
48 {
49 PhoneNumber phone; // create object phone
50
51 cout << "Enter phone number in the form (123) 456-7890:\n";
52
53 // cin >> phone invokes operator>> function by
54 // issuing the call operator>>( cin, phone ).
55 cin >> phone;
56
57 // cout << phone invokes operator<< function by
58 // issuing the call operator<<( cout, phone ).
59 cout << "The phone number entered was: " << phone << endl;
60 return 0;
61 }
Enter phone number in the form (123) 456-7890: (800) 555- The phone number entered was: (800) 555-
Converting between Types (cont)
temporary objects.
cout << s;
Special overloading forms - Example