📅  最后修改于: 2023-12-03 14:39:38.895000             🧑  作者: Mango
在 C++ 中,运算符重载允许我们重新定义已有的运算符,使其在自定义的类型上也可用。因此,我们可以使用自定义类型来执行标准运算。
运算符重载同时可以使代码更加简洁,易于理解和使用。
运算符重载是通过函数实现的。我们可以创建一个函数,它将运算符应用于自定义的类型,可以像使用内置运算符一样直接使用它。
以下是运算符重载的基本语法:
返回类型 operator 运算符(参数列表) {
// 函数体
}
例如,我们可以重载加号运算符,用于将两个自定义的对象相加:
Vector operator+(const Vector& v) {
Vector res;
res.x = x + v.x;
res.y = y + v.y;
res.z = z + v.z;
return res;
}
Q: 什么是友元函数?它如何用于运算符重载?
A: 友元函数是一个非成员函数,但与类的成员函数一样可以访问类的私有成员。
在运算符重载中,如果需要访问类的私有成员,可以将运算符重载函数声明为类的友元函数。
例如,以下代码重载了“<<”运算符,用于输出自定义类型的对象:
class MyClass {
int x;
public:
friend std::ostream& operator<<(std::ostream& os, const MyClass& obj);
};
std::ostream& operator<<(std::ostream& os, const MyClass& obj) {
os << "MyClass(" << obj.x << ")";
return os;
}
注意,在以上代码中,我们在类中声明了“operator<<”函数为友元函数。这样,在运算符重载函数中,我们可以通过访问私有成员变量“x”来输出自定义类型的对象。
运算符重载是 C++ 的一个强大的特性,它能够提高代码的可读性和可维护性。
在重载运算符时需要注意运算符的语义约定,并且友元函数可以帮助我们访问类的私有成员。