运算符重载允许为类或结构体重新定义运算符行为,使对象操作更自然;需用友元或全局函数重载流运算符,因左操作数为标准库对象;重载应保持原语义,前缀自增自减无参数,后缀需int哑元区分;合理使用可提升接口易用性,避免滥用。

在C++中,运算符重载是一种允许我们为自定义类型(如类或结构体)重新定义已有运算符行为的机制。通过运算符重载,我们可以让对象像基本数据类型一样使用 +、-、==、
运算符重载的基本语法
运算符重载通过定义一个以 operator 关键字开头的特殊函数来实现。其基本形式如下:
返回类型 operator 运算符 (参数列表) { 函数体 }这个函数可以是类的成员函数,也可以是全局函数(友元函数或普通函数),具体选择取决于运算符的类型和使用需求。
成员函数方式重载运算符
对于大多数二元运算符(如 +、-)和赋值类运算符(如 +=、=),通常将它们作为类的成员函数实现。此时,左操作数是调用该函数的对象(即 *this),右操作数作为参数传入。
立即学习“C++免费学习笔记(深入)”;
例如,实现一个简单的复数类并重载加法运算符:
class Complex {private:
double real, imag;
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
Complex operator+(const Complex& other) const {
return Complex(real + other.real, imag + other.imag);
}
void print() const {
std::cout }
};
这样就可以直接使用 c1 + c2 来进行复数相加。
本文档主要讲述的是Fortran基本用法小结;希望能够给学过C但没有接触过Fortran的同学带去一些帮助。Fortran是一种编程语言。它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
友元函数方式重载运算符
某些运算符(如 > 用于输入)必须使用友元函数或全局函数重载,因为左操作数是标准库对象(如 std::ostream),无法修改其类定义。
例如,重载
friend std::ostream& operator
os
return os;
}
该函数声明为类的友元,以便访问私有成员。使用时可以直接写 std::cout 。
常见可重载的运算符及注意事项
以下是一些常见的可重载运算符:
- 算术运算符:+、-、*、/、%
- 复合赋值:+=、-=、*=、/=
- 自增自减:++、--(注意前缀与后缀的区别)
- 关系运算符:==、!=、、=
- 流操作符:>
- 下标访问:[]
- 函数调用:()
注意:
- 不能创建新的运算符,只能重载已有的。
- 部分运算符必须作为成员函数重载,如 =、[]、()、->。
- 重载时应尽量保持运算符原有的语义,避免造成误解。
- 对于自增/自减,前缀形式无参数,后缀形式需加一个 int 哑元参数以区分。
基本上就这些。掌握运算符重载能显著提升类接口的自然性和易用性,但应合理使用,避免滥用导致代码难以理解。









