> 백엔드 개발 > C++ > 액세스 지정자(개인, 보호, 공개)는 상속 시 멤버 접근성에 어떤 영향을 줍니까?

액세스 지정자(개인, 보호, 공개)는 상속 시 멤버 접근성에 어떤 영향을 줍니까?

Mary-Kate Olsen
풀어 주다: 2024-12-16 18:11:11
원래의
121명이 탐색했습니다.

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

상속의 액세스 지정자 이해

상속을 통해 클래스는 상위 클래스의 멤버와 기능을 상속받을 수 있지만 상속된 멤버의 접근성은 다음에 따라 달라집니다. 사용된 액세스 지정자. 액세스 지정자 private, protected 및 public은 상속된 클래스에서 멤버에 액세스하는 방법을 제어합니다.

Private Inheritance

  • 기본 클래스의 Private 멤버는 비공개로 유지됩니다.
  • 기본 클래스의 보호 멤버와 공개 멤버는 파생 클래스에서 비공개가 됩니다. class.
  • 파생 클래스는 기본 클래스의 private 멤버에 액세스하는 기능을 잃습니다.

예:

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.
  • 기본 클래스의 전용 멤버는 파생 클래스에서 비공개로 유지됩니다.
  • 파생 클래스는 직접 또는 다음을 통해 기본 클래스의 모든 공용 멤버에 액세스할 수 있습니다. 포인터.

예:

class Base {
public:
    int public_member;
};

class Derived : public Base {
public:
    void accessPublic() {
        public_member = 200; // Allowed
    }
};
로그인 후 복사

고려 사항:

  • 액세스 지정자는 클래스별로 적용됩니다. , 개체별이 아닙니다.
  • 파생 클래스 자신의 기본 클래스 객체의 멤버에만 액세스할 수 있습니다.
  • 친구는 액세스 지정자에 관계없이 클래스의 모든 멤버에 액세스할 수 있습니다.

위 내용은 액세스 지정자(개인, 보호, 공개)는 상속 시 멤버 접근성에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿