溫馨提示×

C++友元類與運算符重載

c++
小樊
81
2024-11-08 22:34:25
欄目: 編程語言

在C++中,友元類和運算符重載是兩個不同的概念,但它們都可以用來實現(xiàn)類似的功能。讓我們分別了解它們。

  1. 友元類(Friend Class):

友元類是指一個類允許其他類或函數(shù)訪問其私有和保護成員。這可以通過在類定義中使用friend關鍵字來實現(xiàn)。友元類可以訪問類的所有成員,包括私有和保護成員。

示例:

#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;
}
  1. 運算符重載(Operator Overloading):

運算符重載是指為已有的運算符賦予新的含義,使其適用于自定義的數(shù)據(jù)類型。在C++中,可以通過在類定義中使用運算符重載聲明來實現(xiàn)。運算符重載可以使得代碼更簡潔、易讀。

示例:

#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;
}

總結:

  • 友元類允許其他類或函數(shù)訪問其私有和保護成員。
  • 運算符重載為已有的運算符賦予新的含義,使其適用于自定義的數(shù)據(jù)類型。
  • 兩者都可以用來實現(xiàn)類似的功能,但它們的目的和使用場景不同。

0