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

C++のアクセス修飾子


アクセス修飾子は、オブジェクト指向プログラミングでデータを隠すために使用されます。 C++で使用されるアクセス修飾子には3つのタイプがあります。これらはパブリック、プライベート、保護されています。これらの詳細は次のとおりです。

パブリックアクセス修飾子

publicと宣言されたクラスのデータメンバーとメンバー関数は、他のクラスを含むすべての人が利用できます。これらは、クラスオブジェクトでドット演算子を使用して、プログラムの任意の場所からアクセスできます。

パブリックアクセス指定子を示すプログラムは次のとおりです。

#include<iostream>
using namespace std;
class Add {
   public:
   int a, b;
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};
int main() {
   Add obj;
   obj.a = 2;
   obj.b = 5;
   obj.sum();
   return 0;
}

出力

Sum of 2 and 5 is 7

上記のプログラムでは、クラスAddには2つのパブリックデータメンバーaとbがあります。関数sum()は、aとbの合計を表示します。これを以下に示します。

class Add {
   public:
   int a, b;
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};

関数main()で、クラスAddのオブジェクトが作成されます。次に、aとbがmain()で初期化されます。これらはパブリックデータ型であるため、これを行うことができます。最後に、aとbの合計を表示するsum()が呼び出されます。これを以下に示します。

Add obj;
obj.a = 2;
obj.b = 5;

obj.sum();

プライベートアクセス修飾子

プライベートとして宣言されたデータメンバーには、クラス内の関数からのみアクセスでき、クラス外の関数からはアクセスできません。フレンド関数は、クラスのプライベートデータメンバーにもアクセスできます。

プライベートアクセス修飾子を示すプログラムは次のとおりです。

#include<iostream>
using namespace std;
class Add {
   private:
   int a, b;
   public:
   void setdata(int x, int y) {
      a = x;
      b = y;
   }
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};
int main() {
   Add obj;
   obj.setdata(9,5);
   obj.sum();
   return 0;
}

出力

Sum of 9 and 5 is 14

上記のプログラムでは、クラスAddには2つのプライベートデータメンバーaとbがあります。関数setdata()は、プライベート変数であるaとbの値を提供します。関数sum()は、aとbの合計を表示します。これを以下に示します。

class Add {
   private:
   int a, b;
   public:
   void setdata(int x, int y) {
      a = x;
      b = y;
   }
   void sum() {
      cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b;
   }
};

関数main()で、クラスAddのオブジェクトが作成されます。次に、関数setdata()が呼び出され、aとbはプライベート変数であるため初期化されます。最後に、aとbの合計を表示するsum()が呼び出されます。これを以下に示します。

Add obj;
obj.setdata(9,5);
obj.sum();

保護されたアクセス修飾子

保護されていると宣言されているクラスのデータメンバーは、プライベートと宣言されているデータメンバーと似ています。クラスの外部から直接アクセスすることはできませんが、基本クラスの派生クラスからアクセスすることはできます。

C++で保護されたアクセス修飾子を示すプログラムは次のとおりです-

#include<iostream>
using namespace std;
class Parent {
   protected:
   int a, b;
};
class Child: public Parent {
   public:
   void getdata(int x, int y) {
      a=x;
      b=y;
   }
   void putdata() {
      cout<<"a = "<<a<<endl;
      cout<<"b = "<<b<<endl;
   }
};
int main() {
   Child obj;
   obj.getdata(9,1);
   obj.putdata();
   return 0;
}

出力

a = 9
b = 1

上記のプログラムでは、親クラスには2つの保護された変数aとbがあります。これを以下に示します。

class Parent {
   protected:
   int a, b;
};

Childクラスには、aとbの値を取得してそれぞれ表示する2つの関数getdata()とputdata()があります。 aとbは保護された変数であり、ChildはParentの派生クラスであるため、これらの関数はこれを実行できます。このためのコードスニペットを以下に示します-

class Child: public Parent {
   public:
   void getdata(int x, int y) {
      a = x;
      b = y;
   }
   void putdata() {
      cout<<"a = "<<a<<endl;
      cout<<"b = "<<b<<endl;
   }
};

main()関数では、Childクラスのオブジェクトobjが作成されます。次に、関数getdata()およびputdata()が呼び出されます。これを以下に示します。

Child obj;
obj.getdata(9,1);
obj.putdata();

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

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

  2. C#のアクセス修飾子

    Access Modifiersは、C#の変数と関数のスコープを指定します。以下は、C#によって提供される使用されるアクセス修飾子です: 公開 public修飾子は、メンバーのアクセスに制限を設定しません。 保護 アクセスは派生クラスまたはクラス定義に制限されています。 内部 宣言があるプログラム内の内部アクセス修飾子アクセス。 保護された内部 保護されたアクセス修飾子と内部アクセス修飾子の両方によって提供されるアクセス指定子があります。 プライベート 宣言されているクラス内でのみ制限されます。プライベートとして指定されたメンバーは、クラス外からアクセスできません。 例 保護されたメン