C では、フレンド関数は、クラスのメンバー関数になることなく、クラスのプライベート メンバーにアクセスできます。テンプレート クラスでは、フレンド関数の宣言は通常のクラスの宣言と似ており、クラス定義の外で宣言する必要があります。たとえば、テンプレート クラス MyClass でフレンド関数 printValue を宣言するには、フレンド キーワードを使用してクラス定義の外で関数を宣言する必要があります。フレンド関数は、フレンドとして宣言されているクラスのメンバーにのみアクセスできます。
#C フレンド関数の詳細な説明: テンプレート クラスでの使用
はじめに
フレンド関数は、クラスのメンバー関数にならずにクラスのプライベート メンバーにアクセスできる C の特別なタイプの関数です。フレンド関数は、データや機能をクラスの境界を越えて共有する必要がある場合など、特定の状況で役立ちます。テンプレート クラスのフレンド関数
テンプレート クラスでのフレンド関数の宣言は、通常のクラスでの宣言と非常に似ています。次の例は、テンプレート クラスMyClass でフレンド関数
printValue を宣言する方法を示しています。
template <typename T> class MyClass { public: T value; friend void printValue(const MyClass<T>& obj) { std::cout << "Value: " << obj.value << std::endl; } };
フレンド関数の使用
フレンド関数を使用するには、その関数をクラス定義の外で宣言する必要があります。以下に示すように、friend キーワードを使用してフレンド関数を指定できます。
template <typename T> void printValue(const MyClass<T>& obj);
実用的なケース
があるとします。ノード プライベート データ メンバー
value を含むテンプレート クラス。ノードの値を表示するためのフレンド関数
display を宣言します。
template <typename T> class Node { public: T value; friend void display(const Node<T>& node) { std::cout << "Node Value: " << node.value << std::endl; } };
または
virtual 修飾子を含めることはできません。
以上がC++ フレンド関数の詳細説明: テンプレート クラスでフレンド関数を使用するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。