C++运算符重载
运算符重载允许你为自定义类型(如类或结构体)定义已有的运算符的行为,使其像内置类型一样进行直观操作。其核心语法格式如下:
返回类型 operator 运算符(参数列表) { // 重载的实现 }
这里的 operator
是关键字。运算符重载函数通常作为类的成员函数或友元函数(非成员函数) 实现,两者格式有细微差别。
1. 作为成员函数重载
当重载为类的成员函数时,二元运算符的参数列表通常只需一个参数(右操作数),左操作数默认为该类对象本身(通过 this
指针访问)。一元运算符通常不需要参数。
~~~cpp
class ClassName {
public:
// 二元运算符(例如 +)
返回类型 operator运算符(类型 右操作数) {
// 实现代码
}
// 一元运算符(例如 -)
返回类型 operator运算符() {
// 实现代码
}
};
~~~
2. 作为友元函数(非成员函数)重载
某些运算符(如输入 >>
和输出 <<
运算符)必须重载为非成员函数,通常声明为类的 friend
以便访问私有成员。此时,参数列表通常需要两个参数,分别表示左、右操作数。
~~~cpp
class ClassName {
public:
// 声明友元函数
friend 返回类型 operator运算符(类型 左操作数, 类型 右操作数);
};
// 在类外定义
返回类型 operator运算符(类型 左操作数, 类型 右操作数) {
// 实现代码
}
~~~