在C++中,友元类和运算符重载是两个不同的概念,但它们都可以用来实现类似的功能。让我们分别了解它们。
友元类是指一个类允许其他类或函数访问其私有和保护成员。这可以通过在类定义中使用friend
关键字来实现。友元类可以访问类的所有成员,包括私有和保护成员。
示例:
#include <iostream>
class A {
private:
int x;
public:
A(int a) : x(a) {}
// 声明B为友元类
friend class B;
};
class B {
public:
void printX(const A& obj) {
std::cout << "x = " << obj.x << std::endl;
}
};
int main() {
A objA(10);
B objB;
objB.printX(objA); // 输出:x = 10
return 0;
}
运算符重载是指为已有的运算符赋予新的含义,使其适用于自定义的数据类型。在C++中,可以通过在类定义中使用运算符重载声明来实现。运算符重载可以使得代码更简洁、易读。
示例:
#include <iostream>
class Complex {
private:
double real;
double imag;
public:
Complex(double r, double i) : real(r), imag(i) {}
// 重载加法运算符
Complex operator+(const Complex& other) const {
return Complex(real + other.real, imag + other.imag);
}
};
int main() {
Complex c1(3, 4);
Complex c2(1, 2);
Complex c3 = c1 + c2; // 输出:(4, 6)
return 0;
}
总结: