2023年12月29日金曜日

c++において、privateメンバーにはクラスの外からアクセスできないが、これはどうして?

 C++ において、private メンバーにはクラスの外からアクセスできないのは、データの隠蔽とカプセル化を実現するためです。

データの隠蔽とは、クラスの内部で定義されたデータに、クラスの外から直接アクセスできないようにすることです。これにより、クラスの内部でデータがどのように使用されているかを、クラスの外から知る必要がなくなります。

カプセル化とは、データとその処理を単一のユニットにまとめることです。これにより、データの整合性を保ちやすくなり、オブジェクト指向プログラミングの基本原則である「情報隠蔽」を実現することができます。

private メンバーをクラスの外からアクセスできないようにすることで、データの隠蔽とカプセル化を実現することができます。

具体的には、private メンバーは、クラスの内部からのみアクセスできます。クラスの外からアクセスするには、public メンバーの関数や演算子を使用する必要があります。

たとえば、次のコードでは、Person クラスの name メンバーは private 型です。そのため、クラスの外から name メンバーに直接アクセスすることはできません。

C++
class Person {
 //public:  これは間違いですprivate:  //これが正しい
  // 名前
  std::string name;public:  //これが必要です。

  // 名前を設定
  void setName(std::string name) {
    this->name = name;
  }

  // 名前を取得
  std::string getName() const {
    return name;
  }
};

このクラスの外から name メンバーにアクセスするには、次のコードを使用できます。

C++
Person person("John Doe");

// 名前を設定
person.setName("Jane Doe");

// 名前を取得
std::cout << person.getName() << std::endl;

このコードでは、setName() 関数を使用して name メンバーに値を設定し、getName() 関数を使用して name メンバーの値を取得しています。

このように、private メンバーをクラスの外からアクセスできないようにすることで、データの隠蔽とカプセル化を実現し、オブジェクト指向プログラミングをより安全かつ効率的に行うことができます。

0 件のコメント:

コメントを投稿