当前位置: 首页 > news >正文

C++哪些运算符不能被重载?

在 C++ 中,大多数运算符都可以通过重载来自定义它们的行为,但有一些运算符是不能被重载的,这是出于语言语义、逻辑一致性或安全性考虑。


❌ 不能被重载的运算符(共 6 个)

运算符说明
.成员访问运算符(如 obj.member),无法重载
.*成员指针访问运算符(如 obj.*ptr
::作用域解析运算符(如 std::cout
sizeof求对象/类型大小
typeid类型识别运算符(用于 RTTI)
? :三目运算符(三元选择符)

⚠️ 补充说明

1. ..* 为什么不能重载?

  • 这些运算符和对象成员访问密切相关,重载会破坏语义清晰性。
  • 如果想自定义访问行为,可以通过重载 operator-> 间接实现。

2. :: 是作用域解析,必须在编译阶段解析,无法重载。

3. sizeoftypeid编译期操作符,依赖类型信息,不能用于运行时多态行为。

4. ? : 是一个控制结构(不是函数调用),语法和语义复杂,不允许重载。


✅ 常见可重载的运算符(对比理解)

类别运算符举例
算术+ - * / %
比较== != < > <= >=
逻辑`&&!`
位运算`&^ ~ << >>`
赋值相关`= += -= *= /= %= &== ^=`
自增自减++ --
下标[]
函数调用()
指针访问->(注意:不是.
地址/解引用& *
输入输出<< >>(通常用于流操作)

🧠 记忆口诀(不能重载的运算符):

“点、指针、双冒号,大小类型三目巧。”
—— 即 ..*::sizeoftypeid?: 不能重载。


http://www.dtcms.com/a/296963.html

相关文章:

  • kubernetes集群中部署CoreDNS服务
  • day46day47 通道注意力
  • 一种基于单片机控制的太阳能电池板系统设计
  • 集训Demo6
  • 挖掘录屏宝藏:Screenity 深度解析与使用指南
  • 《计算机网络》实验报告八 加密、数字签名与证书
  • pytest测试框架
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWGeneral
  • 【Vue学习笔记】状态管理:Pinia 与 Vuex 的使用方法与对比【附有完整案例】
  • 网络安全入门第一课:信息收集实战手册(2)
  • C语言-指针[变量指针与指针变量]
  • Java 集合框架之----ArrayList
  • Effective Modern C++ 条款16:保证const成员函数的线程安全性
  • 网址收集总结
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-17,(知识点:PCB布线,传输线阻抗影响因素)
  • 第一二章笔记
  • [ComfyUI] --ComfyUI 是什么?比 Stable Diffusion WebUI 强在哪?
  • 【STM32项目】智能台灯
  • 无人机保养指南
  • 深入解析Hadoop NameNode的Full GC问题、堆外内存泄漏及元数据分治策略
  • 软件测试的分类
  • C++实现精确延时的方法
  • 季逸超:Manus的上下文工程启示
  • Photoshop下载安装入门教程:从下载安装到第一次完美使用
  • 应急响应】Linux 自用应急响应工具发版 v6.0(LinuxGun)
  • 20 BTLO 蓝队靶场 Sticky Situation 解题记录
  • Voice AI Agent 知识库:打造你自己的语音智能体!
  • Vitest 用法详解及 Coverage Web 工具介绍
  • C# 密封类_密封方法 (seadled 关键字)
  • 【postgresql按照逗号分割字段,并统计数量和求和】