ホームページ >バックエンド開発 >C++ >アクセス指定子 (プライベート、プロテクト、パブリック) は継承時のメンバーのアクセシビリティにどのように影響しますか?

アクセス指定子 (プライベート、プロテクト、パブリック) は継承時のメンバーのアクセシビリティにどのように影響しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-16 18:11:11125ブラウズ

How Do Access Specifiers (private, protected, public) Affect Member Accessibility in Inheritance?

継承におけるアクセス指定子を理解する

継承により、クラスは親クラスからメンバーと機能を継承できますが、これらの継承されたメンバーのアクセシビリティは、使用されるアクセス指定子。アクセス指定子 private、protected、public は、継承されたクラスでメンバーにアクセスする方法を制御します。

プライベート継承

  • 基本クラスのプライベート メンバーは、継承されたクラスでプライベートのままになります。派生クラス。
  • 基本クラスの保護されたパブリック メンバーは、派生クラスではプライベートになります。 class.
  • 派生クラスは、基本クラスのプライベート メンバーにアクセスできなくなります。

例:

class Base {
private:
    int private_member;
};

class Derived : private Base {
public:
    void accessPrivate() {
        // Error: Cannot access 'private_member' because it's private in 'Base'
    }
};

保護されています継承

  • 基本クラスのパブリック メンバーは、派生クラスで保護されます。
  • 基本クラスの保護されたメンバーは、派生クラスでも保護されたままです。
  • 派生クラスは、基本クラスの保護されたメンバーに直接アクセスすることも、基本クラスへのポインターを介してアクセスすることもできます。オブジェクト。

例:

class Base {
protected:
    int protected_member;
};

class Derived : protected Base {
public:
    void accessProtected() {
        protected_member = 100; // Allowed
    }
};

パブリック継承

  • パブリックおよび保護されたメンバー基本クラスが派生クラスでパブリックになるclass.
  • 基本クラスのプライベート メンバーは、派生クラスでもプライベートのままです。
  • 派生クラスは、基本クラスのすべてのパブリック メンバーに直接または経由でアクセスできます。 pointers.

例:

class Base {
public:
    int public_member;
};

class Derived : public Base {
public:
    void accessPublic() {
        public_member = 200; // Allowed
    }
};

考慮事項:

  • アクセス指定子はクラスごとに適用されます
  • 派生クラスは、オブジェクトごとではありません。独自の基本クラス オブジェクトのメンバーにアクセスします。
  • フレンドは、アクセス指定子に関係なく、クラスのすべてのメンバーにアクセスできます。

以上がアクセス指定子 (プライベート、プロテクト、パブリック) は継承時のメンバーのアクセシビリティにどのように影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。