ホームページ > バックエンド開発 > C++ > 同じ C クラス内のオブジェクトが別のオブジェクトのプライベート データにアクセスできるのはなぜですか?

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

Barbara Streisand
リリース: 2024-12-10 01:17:17
オリジナル
954 人が閲覧しました

Why Can One Object Access Another's Private Data in the Same C   Class?

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

次のコード スニペットを考えてみましょう:

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;
};
ログイン後にコピー

奇妙なことに、getData() は別の TrivialClass オブジェクトのプライベート メンバー mData にアクセスできます。これが許可されるのはなぜですか?

クラスごとのアクセス制御

C では、アクセス制御はオブジェクトごとではなくクラスごとに実装されます。これは、同じクラスのすべてのオブジェクトが、その状態や相互作用する他のオブジェクトに関係なく、クラスのプライベート メンバーに対して同じアクセス権を持っていることを意味します。

コンパイル時実装

C のアクセス制御はコンパイル時に強制されるため、オブジェクトごとの制御を実装するのは非現実的です。ただし、クラスごとの制御はコンパイル中に効率的かつ確実に実装できます。

保護されたアクセス

アクセス制御は通常クラスごとですが、保護されたアクセス指定子は次の機能を提供します。オブジェクトごとの制御の基本的な形式。ただし、この制御は、真のオブジェクトごとのアクセス制御で可能となるものと比較すると制限されています。

結論として、 C のアクセス制御メカニズムは C のアクセス制御メカニズムが動作するため、同じクラスのオブジェクトは相互にプライベート データにアクセスできます。クラスごとに。この設計上の決定により、コンパイル中に効率的かつ信頼性の高いアクセス制御を適用できるようになります。

以上が同じ C クラス内のオブジェクトが別のオブジェクトのプライベート データにアクセスできるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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