在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;
}
總結: