ホームページ >バックエンド開発 >C++ >C++ フレンド関数はクラス外で宣言できますか?

C++ フレンド関数はクラス外で宣言できますか?

王林
王林オリジナル
2024-04-16 15:42:011147ブラウズ

C では、フレンド関数をクラスの外で宣言できますが、フレンド関数はクラスの定義のすぐ隣に、フレンド キーワードで始まる必要があり、クラスのスコープによって制限されません。

C++ 友元函数可以在类外声明吗?

#C フレンド関数はクラスの外で宣言できますか?

序文
フレンド関数は、クラスの外部のクラスのプライベート/保護されたメンバーにアクセスする特別な関数です。これらはクラス定義の外で宣言されます。この記事では、C のフレンド関数のクラス外宣言ルールについて説明し、説明のための実践的な例を示します。

#クラス外宣言のルールC では、フレンド関数をクラス外で宣言できますが、次のルールに注意する必要があります。

  1. Friend 宣言はクラス定義の直後にある必要があります。 Friend 関数の宣言はクラス定義の直後にあり、friend キーワードで始まる必要があります。
  2. フレンドはクラスのスコープとは何の関係もありません: フレンド関数の宣言はクラスのスコープによって制限されず、クラス内のどこでも宣言できます。

実際的なケース

以下は、クラス外のフレンド関数の宣言を示す実際的なケースです:

// 类 Person 定义
class Person {
private:
  std::string name_; // 私有成员变量

public:
  Person(const std::string& name) : name_(name) {}
};

// 友元函数声明(在 Person 类外)
friend std::ostream& operator<<(std::ostream& os, const Person& person);

// 主函数
int main() {
  Person p("John Doe");
  std::cout << p << std::endl; // 调用友元函数
}

// 友元函数定义(在 Person 类外)
std::ostream& operator<<(std::ostream& os, const Person& person) {
  os << person.name_;
  return os;
}

コードの説明この例では:

  • person クラス定義にはプライベート メンバー変数 name_ が含まれています。
  • operator<< この関数は、Person クラスのフレンド関数として宣言され、クラスの定義の後に配置されます。
  • main 関数では、
  • Person オブジェクトが作成され、その name_ 値が出力されます。これには、friend 関数を呼び出す必要があります。
  • Friend 関数はクラスの外にも定義されており、
  • name_ プライベート メンバー変数にアクセスし、その値を出力します。

結論C のフレンド関数はクラスの外で宣言できますが、クラス定義のすぐ隣に配置し、
friend キーワードを使用する必要があります。 。フレンド関数の宣言はクラス スコープによって制限されないため、クラス外のプライベート メンバーに柔軟にアクセスできます。明確さと読みやすさのために、クラス定義の近くでフレンド関数を宣言することをお勧めします。

以上がC++ フレンド関数はクラス外で宣言できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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