两个C++对象是否相等,要程序员自己下定义,通常是覆盖==操作符
我曾经好多年对Java的==和equals的区别和联系搞不清楚,后来搞清楚了,笔记在这里:
http://www.cnblogs.com/findumars/p/3240761.html
http://www.cnblogs.com/findumars/p/3746878.html
刨去更细节的内容,其实只要明白一个原理即可:两个对象在内存中是两个不同的区域,就算其所有内容完全一模一样,也仍然是两个不同的对象。只是编程嘛,就是描述逻辑,有些情况下我们必须定义什么叫做两个对象相等。这个就随你啦,你可以定义两个对象的首地址相等才叫对象相等(其实是不可能实现的),可以定义它们的HashCode相等就对象相等,或者仅仅是对象名字相等就算对象相等。这个思想在OO中是通用的,不仅仅为Java所独有。比如今天在Qt的文档中发现这段描述:
bool QVector::contains ( const T & value ) const
Returns true if the vector contains an occurrence of value; otherwise returns false.
This function requires the value type to have an implementation of operator==().
http://qt-project.org/doc/qt-4.8/qvector.html#contains
其实就是说QVector不懂你说的包含是指什么。所以你必须为T类型的数据单独定义==操作符。我觉得吧,比较两个对象相等够麻烦,除非逻辑确实需要直接保存和处理对象,否则一般情况下只要比较两个对象的指针(首地址)即可。那样多省事呀。就像Delphi里的TList,简直是RTL的核心管理类,许多RTL类都是靠它来实现的,但TList通常还不是仅仅用来保存指针而已(不过也刚巧,TObject.Create返回的全部都是堆上的指针,如果直接保存对象可能会麻烦一些)。
两个C++对象是否相等,要程序员自己下定义,通常是覆盖==操作符的更多相关文章
- 确定两串乱序同构 牛客网 程序员面试金典 C++ Python
确定两串乱序同构 牛客网 程序员面试金典 C++ Python 题目描述 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串中 ...
- C# 中重载自增自减操作符的具体运算原理 ----从C++程序员的角度看C#自增操作符重载的实质
看了看C#的运算符重载,发现与C++打不相同.刚刚被C#的自增操作符坑了,现在来分享一下. 先定义一个类 class A { public int i; public A(int I) { i = I ...
- C/C++程序员应聘试题剖析(转载)
转载自:http://www.cnitblog.com/zouzheng/articles/21856.html 1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面 ...
- 黑马程序员——Objective-c特性
1. 继承 Objective-c不支持多继承. Super 关键字:调用该类的父类: 超类:父类的另一种说法. 2.自定义NSLog()输出: 在类中添加description方法就可以自定义NS ...
- 程序员谈学习:我为什么要学习Linux?
http://kb.cnblogs.com/page/196876/ 好长时间没好好写点东西了,前段时间由于项目的需要出差了一个多月,期间各种加班,每天晚上加班到十点,回到宾馆实现是没什么精力再写博客 ...
- 【转】C/C++程序员应聘常见面试题深入剖析
1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见. 许多面试题看似简单,却需要深厚的基 ...
- C# 程序员最常犯的 10 个错误(转)
关于C#关于本文常见错误 #1:把引用当做值来用,或者反过来常见错误 #2:误会未初始化变量的默认值常见错误 #3:使用不恰当或未指定的方法比较字符串常见错误 #4:使用迭代式 (而不是声明式)的语句 ...
- 以技术面试官的经验分享毕业生和初级程序员通过面试的技巧(Java后端方向)
本来想分享毕业生和初级程序员如何进大公司的经验,但后来一想,人各有志,有程序员或许想进成长型或创业型公司或其它类型的公司,所以就干脆来分享些提升技能和通过面试的技巧,技巧我讲,公司你选,两厢便利. 毕 ...
- C# 程序员最常犯的 10 个错误http://www.oschina.net/translate/top-10-mistakes-that-c-sharp-programmers-make
来源:http://www.oschina.net/translate/top-10-mistakes-that-c-sharp-programmers-make 关于C# C#是达成微软公共语言运行 ...
随机推荐
- MSSQL Transaction[事务] and Procedure[存储过程]
--事务分三种 --1.显示事务 --我们手动begin transaction ...... commit transaction/rollback transaction --上面这种写法叫做“显 ...
- JavaEDU614 团队第三周项目总结
JavaEDU614 团队第三周项目总结 本周,根据项目计划完成模块的设计代码 本项目主要是完成俄罗斯方块的基本操作.用户可以自己练习和娱乐.需要满足以下几点要求. (1)界面控制游戏开始.暂停和结束 ...
- C#开源大全--汇总(转)
商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...
- 关于网站IIS日志分析搜索引擎爬虫说明
正文:iis默认的日志文件在C:\WINDOWS\system32\LogFiles中,下面是Seoer惜缘的服务器日志,通过查看,就可以了解搜索引擎蜘蛛爬行经过,如: 2008-08-19 00:0 ...
- Analyzer的报表复制、移动
制作Analyzer报表后,希望可以直接拷贝到其他机子上(无法通过网络连接到) 方法很简单: 1.进入Analyzer的数据库服务器设定页面,查找到连接的系统数据库是哪个 2.将该系统数据库备份出来 ...
- 【Path Sum II】cpp
题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the give ...
- Noip2015总结
Noip2015战役总结 [游记部分] Day0 考前说是可以放松一下,下午呢就在机房打了几盘杀,一起玩了玩狼人.不过晚上觉得还是要有点氛围了,于是稍稍打了几个模板,觉得正确率还不错,给自己一点自信的 ...
- 2010 Asia Fuzhou Regional Contest
A hard Aoshu Problem http://acm.hdu.edu.cn/showproblem.php?pid=3699 用深搜写排列,除法要注意,还有不能有前导零.当然可以5个for, ...
- webservice之XFire的使用(java调用java)
注意:xfire不支持java.util.List等集合,所以调用webservice传递的参数要为基本类型. 转自:http://zp9245.blog.163.com/blog/static/10 ...
- TGL 月光精品教程整理
月光站群培训班目录(不定时更新中) wordpress快速配置,插件,模板知识汇总(不定期更新) 适合国人的英文站思维(1) 英语思维-送给正在苦于学英语的童鞋 做seo的重要心态 seo排名难易度分 ...