안녕하세요,
재재입니다.

이번 포스팅에서는,
c++ public, private, protected 키워드에 대한 차이를 깔끔하게 설명드릴게요.

(그 밖의 c++ 과 관련된 글이 궁금하시다면 눌러주세요.)

c++ public protected private 키워드 (c++ 접근 제어자)

각 키워드들은, 주로 c++ 접근 제어자라고 불리는데요.
한번 자세히 알아보겠습니다.

https://en.cppreference.com/w/cpp/language/access

(1) c++ public 키워드

c++ public 키워드로 정의된 변수, 함수 (method) 등은,
클래스 (객체) 의 어디에서나 접근이 가능합니다.

또한, 외부에서도 클래스의 객체를 통해서 직접 접근이 가능합니다.

(2) c++ private 키워드

c++ private 키워드로 정의된 멤버들의 경우,
반드시 해당 클래스의 내부에서만 접근이 가능합니다.
만일, 클래스 외부에서 접근을 하게되는 경우 컴파일에러가 수반됩니다.

주로, 데이터 은닉 (data hiding) 을 위해 주로 사용됩니다.

(3) c++ protected 키워드

c++ protected 키워드로 정의된 멤버들의 경우,
해당 클래스와 그 클래스를 상속받은 파생 클래스 (inherited class) 내에서만 접근이 가능합니다.

즉, 클래스의 객체를 통해서는 접근이 불가능합니다.
private 키워드와의 차이는, 상속받은 파생 클래스에서 사용할 수 있다는 것입니다.

(4) 코드 예제

class BaseClass {
public:
    std::string m_username;
    ...
protected:
    ...    
private:
    int m_id;
    ...
};

m_username 은 객체를 사용하면 바로 접근이 가능하고,
static keyword 를 활용하면 객체를 사용하지 않고도 접근이 가능해집니다.

m_id 의 경우 BaseClass 내부에서만 접근이 가능하고,
BaseClass 를 상속받은 클래스에서는 protected 에 해당하는 멤버까지 추가로 접근이 가능합니다.

추가로, c++ 에서 사용되는 상속은 아래와 같은 형태로 사용됩니다.

class InheritedClass : public BaseClass {
...
c++ public protected private 키워드
태그:                 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다