Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++의 public, private, protected 접근 지정자 차이점 완벽 정리

데이터 은닉(Data Hiding)은 객체 지향 프로그래밍(OOP)의 핵심 기능 중 하나로, 프로그램의 함수가 클래스 타입의 내부 표현에 직접 접근하는 것을 막아줍니다. 이러한 접근 제한은 클래스 본문 안에서 public, private, protected라는 접근 지정자(access modifier) 섹션을 통해 지정할 수 있습니다.

특별히 접근 지정자를 명시하지 않으면, 클래스 멤버와 클래스 자체의 기본 접근 수준은 private으로 설정됩니다.

예제 코드

class Base {
   public:
      // public 멤버는 여기에 작성
   protected:
      // protected 멤버는 여기에 작성
   private:
      // private 멤버는 여기에 작성
};

접근 지정자별 특징

1. public (공개)

public 멤버는 클래스 외부 어디에서든 프로그램 전체 범위에서 접근할 수 있습니다. 별도의 멤버 함수 없이도 public 변수의 값을 자유롭게 설정(set)하고 가져올(get) 수 있습니다.

2. private (비공개)

private 멤버 변수나 함수는 클래스 외부에서 접근할 수 없을 뿐만 아니라, 조회조차 불가능합니다. 오직 해당 클래스 자신과 friend 함수만 private 멤버에 접근할 수 있습니다.

3. protected (보호)

protected 멤버 변수나 함수는 private 멤버와 매우 유사하지만, 한 가지 중요한 장점이 있습니다. 바로 파생 클래스(derived class), 즉 자식 클래스에서도 접근할 수 있다는 점입니다. 이 덕분에 상속 관계에서 부모 클래스의 내부 데이터를 자식 클래스가 안전하게 활용할 수 있습니다.

접근 가능 범위 비교표

접근 지정자클래스 내부파생 클래스외부 코드
publicOOO
protectedOOX
privateOXX

이처럼 세 가지 접근 지정자를 적절히 활용하면 클래스의 캡슐화를 강화하고, 의도치 않은 데이터 변경을 방지하며, 상속 구조에서 필요한 만큼만 기능을 노출하는 견고한 설계를 할 수 있습니다.