C++ 运算符重载与动态内存管理详解
1. 流插入和提取运算符重载为非成员函数的原因
在 C++ 中,重载的流插入运算符 << 和流提取运算符 >> 通常被重载为非成员函数。这是因为在使用这些运算符时,左操作数分别是 ostream & 类型(如 cout )和 istream & 类型(如 cin ),右操作数是用户自定义类的对象。若要将这些运算符作为成员函数,它们必须是 ostream 或 istream 类的成员,但我们不能修改 C++ 标准库类。此外,这些重载运算符函数可能需要访问类对象的私有数据成员,因此可以将它们声明为类的友元函数,以提高性能。
例如,对于 PhoneNumber 类, operator>> 的参数列表是非 const 的,因为需要修改 PhoneNumber 对象来存储输入的电话号码。
2. 一元运算符重载
一元运算符可以重载为非静态成员函数(无参数)或非成员函数(一个参数,该参数必须是类的对象或对象引用)。实现重载运算符的成员函数必须是非静态的,以便访问类的非静态数据。
2.1 作为成员函数的一元运算符重载
以重载一元运算符 ! 来测试自定义 Str
超级会员免费看
订阅专栏 解锁全文
860

被折叠的 条评论
为什么被折叠?



