1. Objects and classes
Objects are instances of classes, they encapsulate(封装) data related to a single entity and define complex behavior to work with or process that data.
- Objects store private state through instance variavles.
- Objects expose private state to other through public instance methods.
2. Function Overloading
Function overloading allow for calling the same function with different parameters.
1 | int sum(int a, int b){ |
3. Operator Overloading
Two ways to overload operators: member functions, non-member functions.
Member functions
Add a function called operator_
to your class:
1 | // header file |
const
means this is a const function, which can’t modify any variables.rhs
means it’s a right-hand-side. For each operator,this
is the lhs(left-hand-side).
1 | // cpp file |
Non-Member Functions
Add a function called operator_
outside of your class. Instead of taking only rhs, it takes both the left hand side and right hand side.
1 | bool operator< (const Time& lhs, const Time& rhs); |
The STL prefers using non-member functions for operator overloading, because it not only allows the LHS to be a non-class type, but also allows us to overload operations with a LHS class that we don’t own.
But how non-member functions can access private member variables? The answer is using friend function.
1 | class Time{ |
<<operator overloading
We can use << to output something to an std::ostream&
.
1 | std::ostream& operator<< (std::ostream& out, const Time& time){ |
Rules of operator overloading
- Meaning should be obvious when you see it.
- Should be reasonably similar to corresponding arithmetic(算术) operations.
- When the meaning isn’t obvious, give it a normal name instead.
- 本文作者: 夏花
- 本文链接: http://xiahua19.github.io/2022/07/26/cs106l-10-Operators/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!