Cpp クラス フレンド

提供:yonewiki

C++に戻る


本来の表記は「C++ クラス フレンド」です。この記事に付けられた題名はテンプレート:記事名の制約から不正確なものとなっています。

※このページではC++にのみ存在する機能として、記事タイトルがC++ クラス フレンドになっています。

クラス フレンド

 friendキーワードはクラスのアクセス指定子に使用され、そのクラスに対して非公開メンバへのアクセス権を与えます。


#include <iostream>

// クラスの宣言
class MyClass {
private:
    int privateData;

public:
    MyClass() : privateData(0) {}

    // クラス外の関数をfriendとして宣言
    friend void accessPrivateData(const MyClass& obj);
};

// friendとして宣言された関数
void accessPrivateData(const MyClass& obj) {
    std::cout << "Accessing private data from friend function: " << obj.privateData << std::endl;
}

int main() {
    MyClass myObject;

    // friend関数を呼び出す
    accessPrivateData(myObject);

    return 0;
}


 サンプルプログラムでは、MyClassというクラスを定義しています。このクラスにはprivateDataというプライベートメンバがあります。そして、このプライベートメンバへのアクセスを許可するために、accessPrivateDataという関数をfriendとして宣言しています。


 main関数内でMyClassのオブジェクトを生成し、accessPrivateData関数を呼び出すと、friendとして宣言された関数がMyClassのプライベートメンバにアクセスできます。これにより、通常はアクセスできないプライベートメンバに対してアクセスすることができます。


 ただし、friendは過度に使用するとカプセル化の原則を侵害し、クラスの隠蔽性を損ねる可能性があるため、注意が必要です。適切に使用することで、特定の関数やクラスに対して限定的に非公開メンバへのアクセス権を与えることができます。


C++に戻る