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

C++のプライベートメンバーと保護されたメンバー


C ++のクラスには、対応するクラスメンバーを含むパブリック、プライベート、および保護されたセクションがあります。

クラス外からプライベートデータメンバーにアクセスすることはできません。これらは、クラスまたはフレンド関数によってのみアクセスできます。すべてのクラスメンバーはデフォルトでプライベートです。

クラス内の保護されたメンバーはプライベートメンバーに似ていますが、プライベートメンバーはアクセスできないのに対し、派生クラスまたは子クラスからアクセスできます。

クラスのプライベートメンバーと保護されたメンバーを示すプログラムは次のとおりです-

#include <iostream>
using namespace std;
class Base {
   public :
   int a = 8;
   protected :
   int b = 10;
   private :
   int c = 20;
};
class Derived : public Base {
   public :
   void func() {
      cout << "The value of a : " << a;
      cout << "\nThe value of b : " << b;
   }
};
int main() {
   Derived obj;
   obj.func();
   return 0;
}

出力

上記のプログラムの出力は次のとおりです。

The value of a : 8
The value of b : 10

それでは、上記のプログラムを理解しましょう。

クラスBaseでは、データメンバーはa、b、cであり、それぞれpublic、protected、privateです。このためのコードスニペットは次のとおりです。

class Base {
   public :
   int a = 8;
   protected :
   int b = 10;
   private :
   int c = 20;
};

DerivedクラスはBaseクラスを継承します。関数func()は、aとbの値を出力します。クラスBaseにプライベートであり、クラスDerivedでアクセスできないため、cの値を出力することはできません。このためのコードスニペットは次のとおりです。

class Derived : public Base {
   public :
   void func() {
      cout << "The value of a : " << a;
      cout << "\nThe value of b : " << b;
   }
};

関数main()で、クラスDerivedのオブジェクトobjが作成されます。次に、関数func()が呼び出されます。このためのコードスニペットは次のとおりです。

int main() {
   Derived obj;
   obj.func();
   return 0;
}

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

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

  2. C ++のアクセス修飾子とは何ですか?

    データの非表示は、オブジェクト指向プログラミングの重要な機能の1つであり、プログラムの機能がクラス型の内部表現に直接アクセスするのを防ぐことができます。クラスメンバーへのアクセス制限は、ラベル付けされたアクセス修飾子(クラス本体内のパブリック、プライベート、および保護されたセクション)によって指定されます。 メンバーとクラスのデフォルトのアクセスはプライベートです class Base {    public:       // public members go here       protected: &n