Overloading in C++
- Two operators that need not be overloaded: assignment (=), address (&)
- Operators that cannot be overloaded
- member (.), scope resolution (::), ternary operator (?:), sizeof, .*
- Cannot overload non-existent operator symbols
- Cannot change precedence, associativity, arity
- At least one operand must be user-defined type
- Two mechanisms:
- Member
- Assignment operator must be overloaded as member
- To prevent different behaviors before and after the non-member function definition
- Non-Member (friend for efficiency)
- When first operand is not an object of the type
- When commutativity desired
- Dynamic data members:
- Overload assignment
- Copy constructor
- Overloading prefix versus postfix operator