C++ Primer 中文版 学习笔记(十三)

本文详细介绍了C++中操作符重载的基本规则及推荐做法,包括操作符作为成员函数或非成员函数的选择标准、重载IO操作符时设置为友元的原因、赋值返回引用的优势以及对->成员访问操作符重载的要求。此外还概述了转换操作符的限制条件。

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

第14章  重载操作符与转换

1        重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义

2        操作符重载成成员函数还是普通非成员函数的一些指导原则

a)        = [] ()->等操作符必须定义为成员,否则编译出错

b)        复合复制操作符(+=)通常应定义为类的成员

c)         改变对象状态或与给定类型紧密联系的其他一些操作符,如自增、自检、和解引用,通常应定义为类成员

d)        对称的操作,如算数操作符、相等操作符、关系操作符、和位操纵符,最好定义为普通非成员函数。

3        重载IO操作符应设为友元。

4        赋值返回一个引用,就不需要创建和撤销结果的临时副本

5        ->成员访问操作符重载,返回值的约束:必须返回指向类类型的指针,或者返回定义了自己的箭头操作符的类类型对象。

a)        如果返回类型是指针,则内置箭头操作符可用于该指针,编译器对该指针解引用并从结果对象获取指定成员

b)        如果返回类型是类类型的对象(或引用),则将递归应用该操作符,直到返回一个指向带有指定成员高的对象的指针,否则出错

6        函数对象(定义了调用操作符的类的对象)常用于覆盖算法使用的默认操作符。

7        转换操作符的限制:

a)        必须是成员函数

b)        不能指定返回类型

c)         形参表必须为空

d)        只允许一次类类型转换

operate int() const {return val;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值