友元重载
时间: 2023-08-12 22:13:05 浏览: 94
友元重载指的是在类中声明一个友元函数或友元类,并且该函数或类重载了类中的某个运算符。这样,该函数或类就可以直接访问类的私有成员变量和私有成员函数,从而实现更灵活的操作。
举个例子,假设有一个名为 `Complex` 的类表示复数,其中包含私有成员变量 `real` 和 `imag`,分别表示实部和虚部。我们可以声明一个名为 `operator+` 的友元函数,用来重载加号运算符,实现复数的加法操作:
```c++
class Complex {
private:
double real;
double imag;
public:
Complex(double r, double i) : real(r), imag(i) {}
friend Complex operator+(const Complex& c1, const Complex& c2);
};
Complex operator+(const Complex& c1, const Complex& c2) {
return Complex(c1.real + c2.real, c1.imag + c2.imag);
}
```
这样,我们就可以直接使用加号运算符进行复数的加法操作,而不需要通过公有成员函数来实现:
```c++
Complex c1(1.0, 2.0);
Complex c2(3.0, 4.0);
Complex c3 = c1 + c2; // 相当于调用 operator+(c1, c2)
```
需要注意的是,友元函数并不属于类的成员函数,因此不能直接访问类的成员变量和成员函数。它们只是被允许访问类的私有成员。
阅读全文