博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 如何重载运算符 —— 一篇简单易懂的博文
阅读量:4696 次
发布时间:2019-06-09

本文共 1062 字,大约阅读时间需要 3 分钟。

C++ 重载运算符


重载运算符在很多地方要用到,而且很方便,虽然没有直接写cmp快,但是用途比cmp广泛很多。

首先我们看一个模板:

struct (名称){    变量    类型 operator 符号(const 名称 变量)const{(返回计算的值)}}

可能比较难懂,下面举个例子:

struct ad{    int x,y;    bool operator <(const ad b)const{
return x

PS:基本上像STL里的堆、排序等等都是重载小于号,而不是大于号。

当然,重载运算符还有一种用法,比如重载[]。

举个例子,C++里数组下标不能为负,所以有负数下标的情况下还得加上个N,烦并且容易错。
那么就可以重载[]。

struct ad{    int a[2*MAXN];//范围-MAXN~MAXN。    int &operator [](const int b){
return a[b+MAXN];}}fa;

举一例:fa[10]==fa.a[10+MAXN]fa[−10]==fa.a[−10+MAXN]//这两个是相等的

是不是很方便,所以重载运算符是个好东西。

高精度也可以重载运算符。

struct ad{    int a[1005],len;    ad(){memset(a,0,sizeof(a));len=0;}      ad(int x){        len=0;memset(a,0,sizeof a);        while (x) a[++len]=x%TT,x/=TT;    }    ad operator +(const ad b){        ad  c;        c.len=max(len,b.len);        for (int i=1;i<=c.len;i++){            c.a[i]+=a[i]+b.a[i];            c.a[i+1]+=c.a[i]/TT;            c.a[i]%=TT;        }        if (c.a[c.len+1]) c.len++;        return c;    }}ans=ans+b;//高精度就可以这么写,注意不能+=,编译通不过。

重载运算符是个好东西,本人的最爱。

转载于:https://www.cnblogs.com/XSamsara/p/9059448.html

你可能感兴趣的文章
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
postgressql数据库中limit offset使用
查看>>
测试思想-集成测试 关于接口测试 Part 2
查看>>
windows下mysql密码忘了怎么办?【转】
查看>>
php生成器使用总结
查看>>
T-SQL中的indexof函数
查看>>
javascript基础之数组(Array)对象
查看>>
mysql DML DDL DCL
查看>>
RAMPS1.4 3d打印控制板接线与测试1
查看>>
python with语句中的变量有作用域吗?
查看>>
24@Servlet_day03
查看>>
初级ant的学习
查看>>
memcached 细究(三)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
webservice整合spring cxf
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
String类的深入学习与理解
查看>>