千家信息网

C++中为什么要小心基类的相等运算符

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"C++中为什么要小心基类的相等运算符",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中为什么要小心基类的相等运算符"吧!Rea
千家信息网最后更新 2025年12月02日C++中为什么要小心基类的相等运算符

这篇文章主要讲解了"C++中为什么要小心基类的相等运算符",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中为什么要小心基类的相等运算符"吧!

Reason(原因)

为继承体系写出简单又好用的相等运算符真的很难。

Example, bad(反面示例)
class B {
string name;
int number;
virtual bool operator==(const B& a) const
{
return name == a.name && number == a.number;
}
// ...
};

B的相等比较运算符的第二个操作数接受类型转换,但是第一个不行。

class D :B {
char character;
virtual bool operator==(const D& a) const
{
return name == a.name && number == a.number && character == a.character;
}
// ...
};

B b = ...
D d = ...
b == d; // compares name and number, ignores d's character
d == b; // error: no == defined
D d2;
d == d2; // compares name, number, and character
B& b2 = d2;
b2 == d; // compares name and number, ignores d2's and d's character

当然有办法让相等比较运算符在继承体系中动作,但是简单的方法不行。

Note(注意)

本规则适用于所有的常见比较运算符:!=, <, <=, >, 和 >=。

Enforcement(实施建议)
  • 提示被定义为虚函数的相等比较运算符;其他比较运算符也一样:!=, <, <=, >, 和 >=。

感谢各位的阅读,以上就是"C++中为什么要小心基类的相等运算符"的内容了,经过本文的学习后,相信大家对C++中为什么要小心基类的相等运算符这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

运算符 运算 C++ 学习 不行 体系 内容 函数 办法 动作 原因 反面 就是 常见 建议 思路 情况 操作数 文章 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 访问量大服务器出现断网 传奇无极数据库怎么修改怪物 数据库运维处理问题 供销网络安全宣传开展情况 远程连接数据库总是报错 河南公司财务软件开发 安庆鑫马网络技术 郑州鼎盛网络技术有限公司中标 黄岛国信互联网科技大厦项目 数据库原理概念模型 java访问远程服务器 网络安全是否包括非法利用 非对称网络技术的概念 网络安全教程ed2k sql在视图里删除数据库 黑龙江互联网养老软件开发哪儿好 通用网络技术咨询售后服务 山东省外计算机网络技术 大学信息网络安全防护 河北省网络安全公约 组织网络安全专题讲座程序 怎么登陆同一服务器上的其他电脑 数据库导航 数据库用户名密码怎么重新设置 国家计算机网络安全协会 广西戴尔服务器售后电话 软件开发项目的名字 医学期刊实验数据库 信息网络安全的三个时段划分 省市区最新json数据库
0