C++에서 접근 권한 의 예시 상세 설명

모두 가 알다 시 피 C++대상 을 대상 으로 하 는 세 가지 특성 은 포장,계승 과 다 형 이다.다음은 우 리 는 먼저 포장 에 대해 간단 한 이 해 를 할 것 이다.패 키 징 은 C++의 클래스 를 통 해 이 루어 집 니 다.클래스 는 추상 을 사용자 정의 형식 으로 바 꾸 는 도구 입 니 다.클래스 의 정 의 는 다음 과 같 습 니 다.

class circle
{
    public: //    
      int  m_L;
      int  m_H;
    public: //    (  )
      double get_Square()
      {
        return m_L*m_H;
      }
}
위의 코드 에서 우 리 는'circle'클래스 를 정 의 했 는데 주로 세 가지 부분 을 포함한다.구성원 변수,구성원 방법 과 접근 제어(public,protect,private).
  • Public:공공 권한,클래스 내 에서 방문 할 수 있 고 클래스 외 에 방문 할 수 있 습 니 다
  • protected:보호 권한,클래스 내 에서 방문 할 수 있 고 클래스 외 에 방문 할 수 없 으 며 계승 하 는 하위 클래스 는 방문 할 수 있 습 니 다
  • private:개인 권한,클래스 내 접근 가능,클래스 외 접근 불가,계승 하위 클래스 접근 불가
  • 다음 에 우리 의 이 세 가 지 를 테스트 하여 인상 을 깊 게 한다.
    
    class circle
    {
     public:
      int  public_L;
      int  public_H;
     private: 
      int  private_L;
      int  private_H;
     protected:
      int protect_L;
      int protect_H;
     
    public: //    (  )
      circle() //               
      {
       public_L = 20, public_H = 30;
       private_L = 40, private_H = 50;
       protect_L = 60, protect_L = 70;
      }
      double get_Square()
      {
       return private_L*private_H;
      }
    };
    
    정 의 된"circle"클래스 에서 변수 publicL,public_H 와 getSquare 는 모두 공유 권한 이 있 기 때문에 클래스 내 클래스 외 에 모두 접근 할 수 있 습 니 다.아래 두 가지 쓰기 가 모두 정확 합 니 다.
    
    circle C1; //      
    double S_1 = C1.get_Square();
    double S_2 = C1.public_H * C1.public_L;
    
    하지만 변수 privateL,private_H 는 모두 개인 권한 이기 때문에 클래스 내 에서 접근 할 수 있 습 니 다.즉,getSquare()에 접근 할 수 있 습 니 다.클래스 밖 에 있 는 쓰기 가 잘못 되 었 습 니 다.
    
    int S_3 = C1.private_H * C1.private_L; //Error:        
    
    마찬가지 로 보호 권한 의 변수 에 대해 클래스 내 에서 접근 할 수 있 고 클래스 외 에 접근 할 수 없습니다.
    
    int S_3 = C1.private_H * C1.private_L; //Error:        
    
    마찬가지 로 상속 방식 도 Public,protect,private 세 가지 가 있다.
    4.567917.Public:공공 상속,부모 클래스 의 구성원 의 방문 권한 을 유지 하고 하위 클래스 에 계승 합 니 다4.567917.proctected:상속 을 보호 하고 개인 권한 을 제외 하고 아버지 류 의 모든 구성원 은 권한 을 보호 하 는 방식 으로 하위 류 에 계승 합 니 다4.567917.private:사유 상속,아버지 류 의 모든 구성원 은 사유 권한 의 방식 으로 하위 클래스 에 계승 된다.
    다음은 하나의 예 를 보 겠 습 니 다.
    
    class son1:public circle{
    }; //     ,   circle           
    class son2:protected circle{
    }; //     ,   circle        ,                  
    class son3:private circle{
    }; //     ,                   
    
    그렇다면 상술 한 분석 을 통 해
  • son 1 의 접근 권한 은 부모 클래스 와 일치 합 니 다
  • 4.567917.son 2 는 클래스 내 에서 만 부모 클래스 의 구성원 을 방문 할 수 있 지만 그의 하위 클래스 에서 도 Public 또는 proctected 계승 방식 으로 부모 클래스'circle'의 구성원 을 방문 할 수 있다4.567917.son3 은 아버지 류 의 구성원 을 사유 적 으로 계승 할 수 밖 에 없다.
    그래서:
    
    son1 s1;
    s1.get_Square(); //  public  ,  
    
    son2 s2;
    s2.get_Square(); //Error:        ,protected  
    
    son3 s3;
    s3.get_Square(); //Error:        ,private  
    
    
    C++에서 클래스 는 class 로 정의 할 수도 있 고 struct 로 정의 할 수도 있 습 니 다.struct 와 class 의 유일한 차 이 는 기본 접근 권한 이 다 르 기 때 문 입 니 다.struct 는 기본적으로 공공 접근 권한 이 고 Class 는 기본적으로 개인 접근 권한 입 니 다.예 를 들 어:
    
    class a
    {
     int m_a; //class   ,          private
    };
    
    struct b
    {
     int m_b; //struct   ,          public
    };
    
    
    그래서:
    
    a c_a;
    c_a.m_a = 20; // Error:         
    
    b s_b;
    s_b.m_b = 20; //   ,  public    
    
    C++클래스 의 구성원 권한 요약:
    private:이 클래스 의 구성원 함수,친구 함수 만 접근 할 수 있 으 며,이 클래스 의 대상 에 접근 할 수 없습니다.
    protected:private 외 에 도 하위 클래스 의 함수 에 접근 할 수 있 으 며,이러한 대상 에 접근 할 수 없습니다.
    Public:proctected 외 에 도 이러한 대상 에 도 접근 할 수 있 습 니 다.
     
    private
    protected
    public
    클래스 함수 와 유원 함수



    하위 함수
    ×


    클래스 의 대상
    ×
    ×

    계승 후 접근 성:
    private 상속 후,부모 클래스 의 모든 방법 은 하위 클래스 에서 private 로 변 합 니 다.
    protected 계승 후,부모 클래스>=protected 의 모든 방법(protected,Public)은 하위 클래스 에서 protected 로 변 합 니 다.
    Public 계승 후 부모 클래스 방법의 속성 은 변 하지 않 습 니 다.
    총결산
    C++에서 의 접근 권한 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C++접근 권한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기