C++クラスの共有とプライベートについて簡単に説明します.

2368 ワード

最も忌み嫌うのはC++を利用してCコードを書くことです!C++を利用してCコードを書く最も主要な特徴の一つはクラスの中のすべてのデータをpublicと宣言して、本文はpublicとprivateを利用してコードを分ける方法を浅く話しました~~~
#define:
  1.キーワードpublicは、クラスのメンバーを共有し、そのクラスのすべてのメンバーにアクセスできるように説明することができる.
  2.キーワードprivateは、クラスのメンバーをプライベートとして説明することができ、オブジェクトに直接アクセスすることはできません.
 
実際には、公有メンバーに対して、オブジェクトを使用して直接呼び出すことができます.たとえば、次のようになります.
class Cat
{
    public:
    int weight;    
};

int main()
{
    Cat cat;//      
   cat.weight=5;
    cout<<"The cat's weight is "<<cat.weight<<endl;
    return 0;
}

上記のプログラムでは、Catクラスのメンバー関数weightが共有メンバーとして宣言されているため、メインウィンドウでまずCatクラスのオブジェクト(cat)を作成し、演算子を使用してweightというデータメンバーを直接呼び出すことができます.
しかし、上記のプログラムのpublicを削除したい場合はprivateに変更することに注意してください.この場合、Catクラスによって宣言されたオブジェクトでこのweightメンバーを呼び出すことはできません.これは、クラスに1つだけ設定します.
次の例では、weightへのアクセスを実現するには、共通のインタフェース関数を使用します.
class Cat
{
   public:
   void setWeight(int w){weight=w;}//    
   int print(){return weight;}//       
  
  private:
   int weight;   
};

int main()
{
    Cat cat;
    cat.setWeight(5);//  cat    5
    cout<<"The cat's weight is "<<cat.print()<<endl;
    return 0; 
}

このようにして、クラス内の共通インタフェース関数を使用すると、呼び出しクラスのプライベートメンバーにアクセスできます.では、このようなメリットは何でしょうか.
メリットは、コードのセキュリティを向上させ、エラーの入力と出力を防止することです.クラスの共通インタフェース関数では、入力した具体的な値を限定できるので、データのエラーは発生しません.例えば次の例です.
class Cat
{
   public:
   void setWeight(int w)
  {
      if(w>0&&w<50)//  ,            if        
         weight=w;
   }//    
   int print(){return weight;}//       
  
  private:
   int weight;   
};

 
=================================================
一般的には、クラスのデータ・メンバーをプライベートに設定し、クラス内の共通のインタフェース関数を呼び出してアクセスできます.このような利点は、データの付与と読み出しを別々に操作することである.たとえば、上記の例では、データの付与関数をsetWeight(int)に設定し、データの読み出し関数をprint()に設定します.このような利点は、付与関数がどのように動作するかを考慮する必要がなく、読み出し関数のコードの変更も対応する付与関数に影響を与えないことである.これにより、コードの再利用性が向上します.また、データ・メンバーがプライベート化されているため、各オブジェクトは直接アクセスしてデータを変更することはできません.たとえば、上記の例でweightの数値を直接変更するのは合法的ではありません.共通のインタフェース関数でのみクラス内のプライベートデータメンバーにアクセスして変更できます.
このような設定では、プログラムのメンテナンスが容易になり、不要なエラーを回避できます.