C++重载运算符



双目运算符


双目运算符就是具有两个操作数的运算符。如 +、-、==等。


重载双目运算符时,运算符函数中应该具有两个参数,若运算符函数作为类的成员函数,则只需要一个参数。前面我们已经介绍了一些重载函数,现在我们来重载另外一些运算符。下面我们通过一些实例来重载 == 、>运算符。


1.重载==运算符


bool CTime::operator==(CTime& time)  //判断两个对象是否相等,它的返回值只有两个,相等与不相等,所以我们使用bool
{
if(m_nHour == time.m_nHour  //判断两个对象是否相等,需要判断对象的数据成员是否相等
&& m_nMinute == time.m_nMinute
&& m_nSecond == time.m_nSecond)
{
return true; //如果相等,就返回true
}
return false;
}


2.重载>运算符


bool CTime::operator>(CTime& time)
{
if(m_nHour > time.m_nHour) //先判断两个对象的小时数的大小
{
return true;
}
else if(m_nHour < time.m_nHour)
{
return false;
}
else  //这是两个对象小时数相等的情况,接下来就判断分钟数
{
if(m_nMinute > time.m_nMinute)  //再判断两个对象的分钟数的大小
{
return true;
}
else if(m_nMinute < time.m_nMinute)
{
return false;
}
else   //这是两个对象的时钟和分钟相等的情况下
{
if(m_nSecond > time.m_nSecond)  //最后比较秒钟
{
return true;
}
else
{
return false;
}
}
}
return false;  //最后就是两个对象相等,也不满足一个对象大于另外一个对象的情况,返回false
}



单目运算符


单目运算符就是具有一个操作数的运算符。如 !、++、--、+=等。重载单目运算符时,运算符函数中应该具有一个参数,若运算符函数作为类的成员函数,则没有参数。


下面我们通过一些实例来重载++、+=运算符。


1.重载++运算符


前置和后置这个运算符看起来是一样的,那么我们如何区别重载它们呐?编译器已经为我们想好了区别:


CTime  operator++();  //前置++
CTime  operator++(int); //后置++,这个int类型的参数只是为了区分,我们并不会使用这个参数,所以我们不需要形参的名字


2.重载++(前置)运算符


CTime CTime::operator++() //重载++(前置)运算符
{
CTime time(0, 0, 1);  //定义了一个秒数为1的对象
*this = *this + time;  //由于前面我们已经重载了加号运算符,里面已经定义好了相关的操作,所以我们这句代码调用了加号运算符的重载函数,并将对象的秒数加一
  return *this;  //前置++的操作顺序就是先加再返回它的值
}


3.重载++(后置)运算符


CTime CTime::operator++(int) //重载++(后置)运算符
{
CTime time = *this; //后置++的操作规则是先返回再加,所以我们需要创建一个临时变量保存好这个对象的值
CTime time2(0, 0, 1);  //定义了一个秒数为1的对象
*this = *this + time2;  //同上调用了加法运算符的重载函数
return time;  //返回加法操作之前的对象的值
}



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】     

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

有一位课程导师想与你聊聊

客服热线 400-862-8862

回到顶部