• C++运算符重载


    目录

    一、运算符重载的定义

    二、为什么需要运算符重载

    三、规则与限制

    四、类型与语法 

    五、注意事项 

    一、运算符重载的定义

    • 官方定义:运算符重载的实质是函数重载。这意味着你可以为同一个运算符定义多个版本,只要它们的参数列表不同。
    • 自己的理解:想象一下,你有一个遥控车,你可以用一个按钮让它前进。这个按钮就像一个运算符,它告诉遥控车要做什么。现在,如果你有一个特殊的遥控车,你可以自定义这个按钮的功能,让它不只是前进,还可以播放音乐或者打开车灯。这就是“运算符重载”的意思——你可以改变一个运算符的默认行为,让它做你想让它做的事情。本质上是运算符的复用。 

    二、为什么需要运算符重载

    有时候,我们创建了自己的数据类型(比如一个表示复数的类),但我们希望这些数据类型能像内置类型(比如整数或浮点数)一样使用。

    三、规则与限制

    • 并非所有的C++运算符都可以被重载。例如,.(成员选择符)、.*(成员指针选择符)、::(域解析运算符)和? :(条件运算符)等就不能被重载。此外,还有6个运算符不能用于友元函数的重载,包括赋值运算符=、函数调用运算符()、数组下标运算符[]、指向成员选择符->等 
    • 重载后的运算符不能改变其原有的优先级和结合性。
    • 重载后的运算符的操作数个数也不能改变。例如,重载+运算符仍然需要两个操作数。
    • 重载的运算符不能用于内置类型的操作数,除非至少有一个操作数是用户自定义类型。
    • 重载的运算符不能改变其原有的语义。例如,你不能改变+运算符使其执行减法操作。

    四、类型与语法 

    运算符重载的函数定义格式如下:返回类型 operator运算符名(参数列表) { ... } 

    重载后的运算符函数名由关键字operator和要重载的运算符符号组成

    举个例子:

    1. // 重载 + 运算符
    2. Student operator+(const Student& other) {
    3. return Student(this->name + " + " + other.name, this->score + other.score);
    4. }

    五、注意事项 

    • 运算符重载不应过度使用,以避免代码变得难以理解和维护。
    • 运算符重载应该有意义且直观,不能让人误解。比如,我们不应该重载+运算符让它执行减法操作。
    • 重载的运算符应保持其原有的语义和直观性,以便其他程序员能够容易地理解和使用。
    • 不是所有的运算符都可以被重载。有些运算符,比如.::,是不能被重载的。
    • 运算符重载主要是为了让我们自定义的数据类型能够像内置类型那样使用运算符,而不是为了创造一些奇怪的行为。

  • 相关阅读:
    vue3 route meta字段扩展
    selenium (自动化概念 && 测试环境配置)
    测试计划包括哪些内容?目的和意义是什么?
    CSS的媒体查询:响应式布局的利器
    python动态属性的应用场景
    Jmeter压测入门教程
    lazada-商品详情
    系统的去学习一门编程语言,原来有如此捷径
    微信服务商模式(电商收付通)合单支付APIV3完整Demo,可直接使用,适用于(H5、JSAPI、H5、App、小程序)
    【前端修炼场】 — 练习一(熟悉html常见标志语言)
  • 原文地址:https://blog.csdn.net/IDdaxia/article/details/136508108