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(); }