ホームページ > バックエンド開発 > C++ > 同じクラスの C オブジェクトはどのようにして互いのプライベート メンバー変数にアクセスできますか?

同じクラスの C オブジェクトはどのようにして互いのプライベート メンバー変数にアクセスできますか?

Susan Sarandon
リリース: 2024-12-31 07:59:10
オリジナル
402 人が閲覧しました

How Can C   Objects of the Same Class Access Each Other's Private Member Variables?

同じクラスのオブジェクトがお互いのプライベート データにアクセスできるのはなぜですか?

C では、同じクラスのオブジェクトがお互いのプライベート データにアクセスできますアクセス制御はオブジェクトごとではなくクラスごとに動作するためです。これは、プライベート データにはクラスの外部のオブジェクトからのみアクセスできないことを意味します。

たとえば、次のコードを考えてみます。

class TrivialClass {
public:
  TrivialClass(const std::string& data) : mData(data) {}

  const std::string& getData(const TrivialClass& rhs) const {
    return rhs.mData;
  }

private:
  std::string mData;
};

int main() {
  TrivialClass a("fish");
  TrivialClass b("heads");

  std::cout << "b via a = " << a.getData(b) << std::endl;
  return 0;
}
ログイン後にコピー

このコードでは、TrivialClass にはプライベート メンバー変数 mData と、 mData への参照を返すパブリック メンバー関数 getData。オブジェクト a と b が作成されると、どちらも getData 関数を通じて互いのプライベート データにアクセスできます。

これが可能となるのは、 C のアクセス制御が次のルールに基づいているためです:

  • パブリック メンバーはどこからでもアクセスできます。
  • プライベート メンバーは、 class.
  • 保護されたメンバーは、クラス内および派生クラスからアクセスできます。

mData はプライベート メンバーであるため、TrivialClass クラス内からのみアクセス可能である必要があります。ただし、アクセス制御はクラスごとに行われるため、同じクラスのオブジェクトは引き続き互いのプライベート メンバーにアクセスできます。

この動作はすべてのプログラミング言語に存在するわけではありません。 Java などの一部の言語には、真のオブジェクトごとのアクセス制御があり、同じクラスのオブジェクトは相互にプライベート データにアクセスできません。

以上が同じクラスの C オブジェクトはどのようにして互いのプライベート メンバー変数にアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート