www.gusucode.com > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序 > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序/code/C++例题程序/第4章/s4_11/sclass4_11_counter.cpp
//Download by http://www.NewXing.com //类的实现文件 //文件名:ch4_11\sclass4_11_counter.cpp #include "sclass4_11_counter.h" //包含类定义头文件 CCounter::CCounter( ); //构造函数 //后缀++ int CCounter::operator++( int i ) //重载后缀++,先取值,后自加 { int iReturnValue = 0; //创建一个临时对象,原来保存对象原来的值 iReturnValue = m_value; //对象原值赋给临时对象 if( m_value<65635 ) { m_value = m_value++; //此处++为系统默认含义;因为m_value不是CCounter的对象 } else //0~65635的计数器,超过则置0 { m_value = 0; } return iReturnValue; //返回对象原值,也就是临时对象的值 } int CCounter::operator--( int i ) //重载后缀--。先取值,后自减 { int iReturnValue = 0; //创建一个临时对象,原来保存对象原来的值 iReturnValue = m_value; //对象原值赋给临时对象 if( m_value>0 ) { m_value--; //此处--为系统预定义含义;因为m_value不是CCounter的对象 } else //0~65635的计数器,小于0则置65635 { m_value = 65635; } return iReturnValue; //返回对象原值,也就是临时对象的值 } //重载前缀++ int CCounter::operator++( ) //重载前缀++,先自加,后取值 { if( m_value<65635 ) { m_value = m_value++; //此处++为系统默认含义;因为m_value不是CCounter的对象 } else //0~65635的计数器,超过则置0。 { m_value = 0; } return m_value; //返回修改后的原对象的值 } int CCounter::operator--( ) //重载前缀--,先自减,后取值 { if( m_value>0 ) { m_value--; //此处--为系统预定义含义;因为m_value不是CCounter的对象 } else //0~65635的计数器,小于0则置65635 { m_value = 65635; } return m_value; //返回修改后的原对象的值 } int CCounter::operator( )( ) //重载函数运算符,功能:取当前计数器的值 { return m_value; } CCounter CCounter::operator=(int iNum) //重载赋值运算符,将整型值赋给对象 { m_value = iNum; return *this; } //算术运算符重载 CCounter CCounter::operator+(CCounter ob) //重载算术运算符:对象+对象 { m_value = m_value + ob.m_value; //将两个对象的m_value值相加,作为返回对象的值 if (m_value>65535) { m_value = m_value - 65536; //保证m_value的值在0~65535之间 } return *this; } CCounter CCounter::operator-(CCounter ob) //重载算术运算符:对象+对象 { if (m_value > ob.m_value) //保证m_value的值在0~65535之间 { m_value = m_value - ob.m_value; //将两个对象的m_value值相减,作为返回对象的值 } else { m_value = ob.m_value - m_value; } return *this; } CCounter operator+(CCounter ob, int iNum) //重载算术运算符:对象+整数 { CCounter oCCounter; oCCounter.m_value = ob.m_value + iNum; return oCCounter; } CCounter operator+(int iNum, CCounter ob) //重载算术运算符:整数+对象 { CCounter oCCounter; oCCounter.m_value = ob.m_value + iNum; return oCCounter; } //重载比较运算符 bool CCounter::operator>(CCounter ob) //重载比较运算符:对象>对象 { if (m_value > ob.m_value) { return true; } else { return false; } } bool CCounter::operator<=(CCounter ob) //重载比较运算符:对象<对象 { if (m_value <= ob.m_value) { return true; } else { return false; } }