### Restrictions on Overloaded Operators

- The following C++ operators cannot be overloaded:

            .      .*      ::      ?:

- You cannot overload the preprocessing symbols # and ##.
- You cannot change the precedence, grouping, or number of operands of the standard C++ operators.
- An overloaded operator (except for the function call operator) cannot have default arguments or an ellipsis in the argument list.
- You must declare the overloaded =, [], () and -> operators as nonstatic member functions to ensure that they receive lvalues as their first operands.
- The operators new and delete do not follow the general rules described in this section.
- All operators except the = operator are inherited.
- Unless they are explicitly mentioned in Special Overloaded Operators, overloaded unary and binary operators follow the rules outlined in Overloading Unary Operators and Overloading Binary Operators.

Overloaded new and delete
Copy by Assignment