c++运算符重载

今天在快要下班的时候,突然有个要求说,关于设备信息的排序要使用通道号大小来排序,对于之前一直都是使用标题来默认排序的,那么就需要将这个通道的信息进行一个比较才能排序了,于是想到了要重载运算符> < =;由于时间比较紧,所以就随便写了一个运算符重载的函数,没想到搞了几分钟没编译过,吓的不轻,赶紧挂机回家算了,回到家中想想,其实方法是没错的,只是当时有些急着下班,所以就出错了,这个就当回顾一下吧!

#include
#include

typedef struct channel_info
{
 int name;
 int ip;
 int title;
 int devName;
 void operator=(const channel_info& info)
 {
  this->name = info.name;
  this->ip = info.ip;
  this->title = info.title;
  this->devName = info.devName;
 }
 bool operator>(const channel_info& info)
 {
  return (this->name > info.name &&
    this->ip > info.ip &&
    this->title > info.title &&
    this->devName > info.devName);
 }
 bool operator<(const channel_info& info)
 {
  return (this->name < info.name &&
    this->ip < info.ip &&
    this->title < info.title &&
    this->devName < info.devName);
 }
 bool operator==(const channel_info& info)
 {
  return (this->name == info.name &&
    this->ip == info.ip &&
    this->title == info.title &&
    this->devName == info.devName);
 }
}CHANNEL_INFO;
int main(int argc, char* argv[])
{
 CHANNEL_INFO info;
 info.name = 1;
 info.ip = 2;
 info.title = 3;
 info.devName = 4;
 CHANNEL_INFO infoTmp;
 infoTmp = info;
 std::cout<<"operator =  !!!!!!!!!start"<<std::endl;
 std::cout<<"name="<<infoTmp.name<<
  std::endl<<"ip="<<infoTmp.ip<<std::endl<<"title="<<infoTmp.title<<
  std::endl<<"devName="<<infoTmp.devName<<std::endl;
 std::cout<<"operator =  end"<<std::endl;
 CHANNEL_INFO info2;
 info2.name = 2;
 info2.ip = 3;
 info2.title = 4;
 info2.devName = 5;
 vector vct;
 vct.push_back(info);
 vct.push_back(infoTmp);
 vct.push_back(info2);
 std::cout<<"operator >  start"<<std::endl;
 if(info2 > infoTmp)
  std::cout<<"info2 > infoTMP"<<std::endl;
 else
  std::cout<<"info2 < infoTMP"<<std::endl;
 std::cout<<"operator > end"<<std::endl;
 std::cout<<"operator < start"<<std::endl;
 if(info2 < infoTmp)
  std::cout<<"infoTMP > info2"<<std::endl;
 else
 {
  std::cout<<"infoTMP < info2, swap value!"<<std::endl;
  //infoTmp = info2;
  vct.at(1) = vct.at(2);
 }
 std::cout<<"operator < end"<<std::endl;
 std::cout<<"operator =  @@@@@@@@start"<<std::endl;
 std::cout<<"name="<<vct.at(1).name<<
  std::endl<<"ip="<<vct.at(1).ip<<std::endl<<"title="<<vct.at(1).title<<
  std::endl<<"devName="<<vct.at(1).devName<<std::endl;
 std::cout<<"operator =  end"<<std::endl;
 return 0;
}

ps:水平有限,供参考使用。请大家批评指正,互相学习进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值