应对高校C++考试(五) : 运算符重载与有元

本文介绍了C++中的运算符重载和友元函数,阐述了运算符重载的特殊声明模式,特别是对于二元运算符的重载。同时讲解了重载方括号运算符和流输入输出符号<<的功能和实现,以及友元函数如何获得类私有部分的访问权限。文章探讨了这些概念在C++中的应用,以及它们在类封装原则上的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里谈谈c++里面两个特别的语法糖 —-运算符重载和有元。为什么说是特别?

  1. 难以理解,特别装逼,完全可用其他方式替代,比如运算符重载就是一个函数,完全可用函数替代,而且重载的运算符函数根本无法重名字理解函数的意思….
  2. 很多语言都没有,比如java 不会有这么复杂的事情,感觉像块鸡肋

如果不是考试,我永远不会学这种东西。

目录

运算符重载

首先你要有一个观念就是运算符也是一个函数,也是有参数的,所以他也能重载,比如 < 二元运算符 。我们举个第4节Date类的例子我们可以,我们重载运算符来比较 两个Date的大小

class Date{
....
    bool operator < (const Date & o)const{
        if(this->yy == o.yy){
            if(this->mm == o.mm)return this-> dd < o.dd;
            else return this-> mm < o.mm;
        }else return this-> yy < o.yy;
    }
    ...
};

int main(){
    Date d1(2018,6,5);
    Date d2(2019 ,6,5);
    cout << (d1 < d2) << "\n";
    return 0;
}

你应该能从上面的 重载比较运算符中总结出一个特殊的声明模式

<返回值类型> operator <重载运算符号> (函数参数){
....
}

可能你会问 < 运算符是二元运算符为什么只有一个参数?

别忘了在类中的成员函数默认会有一个参数就是该类自己,即成员函数总是应该与类相关的,所以这里我特别用了一个 this 指针,this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值