重载 && 重载递增递和减运算符
class Rule { private: double m_Length; public: explicit Rule(double lg = 1.0) :m_Length{ lg }{} Rule &operator++(); const Rule operator++(int); Rule &operator--(); const Rule& operator--(int); void showRuleLength() { cout <<"长度:"<< this->m_Length << endl; } }; inline Rule& Rule::operator++() { ++(this->m_Length); return *this; } inline const Rule Rule::operator++(int) //返回常量对象,不允许改变 { Rule rule{*this}; //利用复制构造函数建立对象 ++*this; //因为前缀++已经重载了 return rule; //返回对象的副本 } inline Rule& Rule::operator--() { --(this->m_Length); return (*this); } inline const Rule& Rule::operator--(int) { Rule rule(*this); --*this; return rule; } int main() { Rule a{ 4.0 }; Rule b; b = a++; b.showRuleLength(); }