请解释 C++ 中运算符重载的概念及其主要用途。
考察说明
考查对 C++ 运算符重载机制的理解及其在自定义类型上的应用。
回答思路
- 【回答框架 1】运算符重载允许为自定义类型重新定义已有运算符的行为,本质上是编写以 operator 关键字开头的特殊成员函数或非成员函数。
- 【回答框架 2】重载需遵循规则:不能创造新运算符,不能改变操作数个数、优先级和结合性,至少有一个操作数为用户自定义类型。
- 【回答框架 3】主要用途包括实现数学向量、矩阵、字符串等类的算术、比较、输入输出等操作,使代码更自然直观。
- 【回答框架 4】注意选择成员函数或非成员函数:如 << 和 >> 通常作为非成员友元函数,而赋值运算符 = 只能作为成员函数。
- 【关键点 1】运算符重载是对已有运算符赋予新语义,不改变语法结构。
- 【关键点 2】不能重载的运算符包括 ::、. 、.*、?:。
- 【关键点 3】重载不改变运算符优先级和结合性。
- 【易错点 1】不要过度重载导致语义不清晰,如重载 && 或 || 会短路求值失效。
- 【易错点 2】重载 new/delete 等需要注意内存管理复杂性。
- 【易错点 3】成员函数重载时左侧操作数为调用对象,非成员函数两者对称。