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
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- [C++]运算符重载
- 【c++】运算符重载
- C++:运算符重载
- C#:运算符重载
- C++:运算符重载
- 正则表达式笔记
- 玩转大数据系列之Apache Pig高级技能之函数编程(六)
- 挑战2.1 Smallest Difference
- 黑马程序员--多线程
- 5、构造器、类变量和单例
- c++运算符重载
- 116.Populating Next Right Pointers in Each Node
- Jquery面试题整合
- 跟Android说Hello World
- POJ 3461 Oulipo (简单kmp)
- Coredata的理解
- 黑马程序员--OC-多态与继承
- Masonry
- 日拱一卒(十三)