黑马C++笔记 5.5 运算符重载

如题所述

在C++中,运算符重载是一种技术,允许开发者为自定义类型定义新的运算符行为。不同于内置类型如int和double,编译器对这些类型已经内置了运算符的处理规则,但对自定义类型(如类或结构体)则需要我们通过重载来指定如何进行操作。

运算符重载与函数重载(Overload)不同,后者在同一个作用域中通过参数列表的不同来区分。Overload可以是成员函数或非成员函数,根据参数和类型选择调用。然而,派生类的虚函数重载(Override)则需确保函数签名一致,以明确覆盖基类行为。

5.5.1 举例来说,我们可以重载加法运算符+,使其适用于自定义类型。重载运算符本质上是创建一个函数,通过特殊的声明方式将函数体与运算符关联。注意,对内置类型,运算符重载是不允许的,过度使用需谨慎。

5.5.2 左移运算符(如<<)通常在全局函数中重载,用于输出自定义类型,以链式调用方式简化操作。如果类的成员变量私有,可以通过友元函数实现输出,代替get()函数。

5.5.3 递增运算符++的重载涉及前后置的区别,后置重载常用于操作私有成员,确保运算符依赖于自身对象。前置和后置递增在内置类型上的行为不同,重载后需考虑这些差异。

5.5.4 赋值运算符=的重载替换set()函数,C++为类默认提供四种赋值相关函数,但对指向堆区的指针进行赋值时,可能引发内存问题,如浅拷贝导致的内存泄漏。通过深拷贝来解决这个问题。

5.5.5 关系运算符如==、!=等用于自定义类型间的比较,重载后可以进行对象间的比较操作。关系运算符的默认行为可通过重写实现特定功能。

5.5.6 函数调用运算符()的重载可以创建仿函数,如打印和加法功能,甚至匿名函数对象,简化代码并减少内存占用。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜