59、C++ 运算符重载与动态内存管理详解

C++ 运算符重载与动态内存管理详解

1. 流插入和提取运算符重载为非成员函数的原因

在 C++ 中,重载的流插入运算符 << 和流提取运算符 >> 通常被重载为非成员函数。这是因为在使用这些运算符时,左操作数分别是 ostream & 类型(如 cout )和 istream & 类型(如 cin ),右操作数是用户自定义类的对象。若要将这些运算符作为成员函数,它们必须是 ostream istream 类的成员,但我们不能修改 C++ 标准库类。此外,这些重载运算符函数可能需要访问类对象的私有数据成员,因此可以将它们声明为类的友元函数,以提高性能。

例如,对于 PhoneNumber 类, operator>> 的参数列表是非 const 的,因为需要修改 PhoneNumber 对象来存储输入的电话号码。

2. 一元运算符重载

一元运算符可以重载为非静态成员函数(无参数)或非成员函数(一个参数,该参数必须是类的对象或对象引用)。实现重载运算符的成员函数必须是非静态的,以便访问类的非静态数据。

2.1 作为成员函数的一元运算符重载

以重载一元运算符 ! 来测试自定义 Str

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值