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