Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Friendキーワード | カプセル化の概要
C++オブジェクト指向プログラミング

bookFriendキーワード

メニューを表示するにはスワイプしてください

friend キーワードは、オブジェクト指向プログラミングの標準的なカプセル化原則から逸脱する独自の構造体。関数や他の class が、ある privateprotected および class メンバーへアクセスすることを可能にする。

main.cpp

main.cpp

copy
1234567891011121314151617
#include <iostream> class Example { private: const static int static_private_member = 0; friend void func(); // grants access to the private members to func() }; void func() { std::cout << Example::static_private_member; } int main() { func(); }

この手法を使用するとカプセル化が破られるため、外部の要素がclassメンバーへアクセスできるようになる。ただし、その必要が生じる場合もある。 例えば:

KeyManager.h

KeyManager.h

copy
123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

encryptionKeyprivate に保持されており、アクセサメソッドも提供されていません。これは、class の外部からのアクセスを防ぐためです。しかし、暗号化や復号化のために外部アルゴリズムを使用する必要がある場合、ここで friend keyword が役立ちます。

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

copy
12345678910
#include "CryptographicAlgorithm.h" class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; // Allow CryptographicAlgorithm access to private members friend class CryptographicAlgorithm; };

friendキーワードの最も一般的な使用例は、迅速な修正が必要な場合に発生し、後でリファクタリングすることを意図している場合です。class間の関係は、できる限りこのキーワードに依存せずに設計することが望ましいですが、特定の状況では使用が必要になることもあります。

question mark

friendキーワードは何のために使われますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  6
some-alt