C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのフレンドクラスと関数


クラスのフレンド関数はそのクラスのスコープ外で定義されていますが、クラスのすべてのプライベートメンバーと保護されたメンバーにアクセスする権利があります。フレンド関数のプロトタイプはクラス定義に表示されますが、フレンドはメンバー関数ではありません。

フレンドは、関数、関数テンプレート、メンバー関数、またはクラスまたはクラステンプレートにすることができます。この場合、クラス全体とそのすべてのメンバーがフレンドになります。

関数をクラスのフレンドとして宣言するには、次のように、クラス定義の関数プロトタイプの前にキーワードfriendを付けます-

class Box {
double width;

public:
   double length;
   friend void printWidth( Box box );
   void setWidth( double wid );
};

クラスClassTwoのすべてのメンバー関数をクラスClassOneのフレンドとして宣言するには、クラスClassOneの定義に次の宣言を配置します-

friend class ClassTwo;
#include <iostream>
using namespace std;

class Box {
   double width;

   public:
   friend void printWidth( Box box );
   void setWidth( double wid );
};

// Member function definition
void Box::setWidth( double wid ) {
   width = wid;
}

// Note: printWidth() is not a member function of any class.
void printWidth( Box box ) {
   /* Because printWidth() is a friend of Box, it can
   directly access any member of this class */
   cout << "Width of box : " << box.width <<endl;
}

// Main function for the program
int main() {
   Box box;

   // set box width without member function
   box.setWidth(10.0);

   // Use friend function to print the wdith.
   printWidth( box );

   return 0;
}
出力 これにより出力が得られます-

Width of box: 10

関数はクラスのメンバーではありませんでしたが、そのクラスのメンバー変数に直接アクセスできました。これは、特定の状況で非常に役立ちます。



  1. C++のクラスとオブジェクト

    クラスは、オブジェクト指向の概念をサポートし、ユーザー定義のデータ型であるため、C++の主要な機能です。クラスはオブジェクトの仕様を提供し、データ変数と、単一のパッケージでデータを操作するための関数を含みます。 クラス定義 クラス定義は、キーワードclassで始まり、次にクラス名で始まります。その後、クラス本体が定義されます。中括弧で囲まれています。クラス定義には、セミコロンまたはその後の定義のリストが含まれている必要があります。 C++でのクラス定義の例は次のとおりです。 class student {    int rollno;    char

  2. C ++で「友達」を使用する必要があるのはいつですか?

    クラスのフレンド関数はそのクラスのスコープ外で定義されていますが、クラスのすべてのプライベートメンバーと保護されたメンバーにアクセスする権利があります。フレンド関数のプロトタイプはクラス定義に表示されますが、フレンドはメンバー関数ではありません。 フレンドは、関数、関数テンプレート、メンバー関数、またはクラスまたはクラステンプレートにすることができます。この場合、クラス全体とそのすべてのメンバーがフレンドになります。 関数をクラスのフレンドとして宣言するには、次のように、クラス定義の関数プロトタイプの前にキーワードfriendを付けます- class Box {    d