C++友元函數(shù)支持友元類嗎

c++
小樊
81
2024-11-09 01:03:26
欄目: 編程語言

在C++中,友元函數(shù)可以訪問類的私有(private)和保護(hù)(protected)成員,但不能直接訪問類的友元類。然而,您可以通過以下方法實(shí)現(xiàn)類似的功能:

  1. 在友元類中定義一個(gè)友元函數(shù),該函數(shù)可以訪問原始類的私有和保護(hù)成員。
  2. 將需要訪問的原始類的對(duì)象作為友元類對(duì)象的成員變量。

下面是一個(gè)示例:

#include <iostream>

class OriginalClass {
public:
    OriginalClass(int value) : value_(value) {}

    friend class FriendClass; // 聲明FriendClass為OriginalClass的友元類

private:
    int value_;
};

class FriendClass {
public:
    void accessOriginalClassMembers(OriginalClass &obj) {
        std::cout << "Original class value: " << obj.value_ << std::endl;
    }
};

int main() {
    OriginalClass obj(42);
    FriendClass friendObj;
    friendObj.accessOriginalClassMembers(obj); // 訪問OriginalClass的私有成員
    return 0;
}

在這個(gè)示例中,OriginalClassFriendClass聲明為友元類,這樣FriendClass中的accessOriginalClassMembers函數(shù)就可以訪問OriginalClass的私有成員value_。

0