remove maps
This commit is contained in:
@@ -72,18 +72,17 @@ ostream& operator<< (ostream & ostr, Complex const& c) {
|
|||||||
|
|
||||||
## 14.4 Operators as Non-Member Functions and as Member Functions
|
## 14.4 Operators as Non-Member Functions and as Member Functions
|
||||||
|
|
||||||
- We have already written our own operators, especially operator<, to sort objects stored in STL containers
|
- We have already written our own operators, especially operator<, to sort objects stored in STL containers.
|
||||||
and to create our own keys for maps.
|
|
||||||
- We can write them as non-member functions (e.g., operator-). When implemented as a non-member function,
|
- We can write them as non-member functions (e.g., operator-). When implemented as a non-member function,
|
||||||
the expression: z - w is translated by the compiler into the function call: operator- (z, w)
|
the expression: z - w is translated by the compiler into the function call: operator- (z, w)
|
||||||
- We can also write them as member functions (e.g., operator+). When implemented as a member function, the
|
- We can also write them as member functions (e.g., operator+). When implemented as a member function, the
|
||||||
expression: z + w is translated into: z.operator+ (w)
|
expression: z + w is translated into: z.operator+ (w)
|
||||||
This shows that operator+ is a member function of z, since z appears on the left-hand side of the operator.
|
This shows that operator+ is a member function of z, since z appears on the left-hand side of the operator.
|
||||||
Observe that the function has only one argument!
|
Observe that the function has only one argument!
|
||||||
There are several important properties of the implementation of an operator as a member function:
|
There are several important properties of the implementation of an operator as a member function:
|
||||||
– It is within the scope of class Complex, so private member variables can be accessed directly.
|
– It is within the scope of class Complex, so private member variables can be accessed directly.
|
||||||
– The member variables of z, whose member function is actually called, are referenced by directly by name.
|
– The member variables of z, whose member function is actually called, are referenced by directly by name.
|
||||||
– The member variables of w are accessed through the parameter rhs.
|
– The member variables of w are accessed through the parameter rhs.
|
||||||
– The member function is const, which means that z will not (and can not) be changed by the function.
|
– The member function is const, which means that z will not (and can not) be changed by the function.
|
||||||
- Also, since w will not be changed since the argument is also marked const.
|
- Also, since w will not be changed since the argument is also marked const.
|
||||||
- Both operator+ and operator- return Complex objects, so both must call Complex constructors to create these
|
- Both operator+ and operator- return Complex objects, so both must call Complex constructors to create these
|
||||||
|
|||||||
Reference in New Issue
Block a user