c++运算符重载

来源:互联网 发布:我好想你网络歌手 编辑:程序博客网 时间:2024/05/19 12:27

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

#include#includetypedef 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