溫馨提示×

C++友元類如何定義和使用

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

在C++中,友元類(friend class)是一種特殊的類關(guān)系,允許一個類訪問另一個類的私有(private)和保護(protected)成員。友元類不是被另一個類包含的類,而是與另一個類有相互訪問權(quán)限的類。

要定義一個友元類,需要在類聲明中使用friend關(guān)鍵字。這里有一個簡單的例子來說明如何定義和使用友元類:

#include <iostream>

// 聲明類A
class A {
public:
    A(int value) : value_(value) {}

    // 聲明類B為友元類
    friend class B;

    // 定義一個公有成員函數(shù),用于輸出類A的成員變量
    void printValue() const {
        std::cout << "Value of A: " << value_ << std::endl;
    }

private:
    int value_;
};

// 聲明類B
class B {
public:
    B(int value) : value_(value) {}

    // 定義一個成員函數(shù),用于訪問類A的私有成員變量
    void printAValue() const {
        std::cout << "Value of A: " << a_.value_ << std::endl;
    }

private:
    int value_;
    // 定義一個友元聲明,允許類B訪問類A的私有成員變量
    friend class A;
};

int main() {
    A a(10);
    B b(20);

    // 使用類A的成員函數(shù)輸出其私有成員變量
    a.printValue();

    // 使用類B的成員函數(shù)訪問類A的私有成員變量
    b.printAValue();

    return 0;
}

在這個例子中,我們有兩個類:AB。類A有一個私有成員變量value_,而類B有一個私有成員變量value_和一個成員函數(shù)printAValue()。我們在類A的聲明中使用friend class B;將類B聲明為友元類,這樣類B就可以訪問類A的私有成員變量value_。同樣,我們在類B的聲明中使用friend class A;將類A聲明為友元類,這樣類A就可以訪問類B的私有成員變量value_。

main()函數(shù)中,我們創(chuàng)建了類A和類B的實例,并使用它們的成員函數(shù)分別輸出各自的私有成員變量。

0