ホームページ  >  記事  >  バックエンド開発  >  C++ フレンド関数の詳細説明: テンプレート クラスでフレンド関数を使用するには?

C++ フレンド関数の詳細説明: テンプレート クラスでフレンド関数を使用するには?

王林
王林オリジナル
2024-04-29 09:45:02761ブラウズ

C では、フレンド関数は、クラスのメンバー関数になることなく、クラスのプライベート メンバーにアクセスできます。テンプレート クラスでは、フレンド関数の宣言は通常のクラスの宣言と似ており、クラス定義の外で宣言する必要があります。たとえば、テンプレート クラス MyClass でフレンド関数 printValue を宣言するには、フレンド キーワードを使用してクラス定義の外で関数を宣言する必要があります。フレンド関数は、フレンドとして宣言されているクラスのメンバーにのみアクセスできます。

C++ 友元函数详解:友元函数在模板类中的使用?

#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;
  }
};

フレンド関数を作成するときは、次の点に注意する必要があります。

    関数はクラス定義の外で宣言する必要があります。
  • 関数プロトタイプには、
  • const または virtual 修飾子を含めることはできません。
  • 関数は、それをフレンドとして宣言したクラスのメンバーにのみアクセスできます。

以上がC++ フレンド関数の詳細説明: テンプレート クラスでフレンド関数を使用するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。