C++에서는 구조체(또는 클래스)의 멤버에 대한 외부의 참조를 허가할 것인지 금지할 것인지를 지정할 수 있다. 클래스 멤버 데이터 및 함수에 대한 액세스를 제어하여 C++로 작성된 소프트웨어의 무결성을 높일 수 있다.
아래와 같이 클래스 멤버의 액세스 수준을 private, protected 또는 public으로 선언할 수 있다.
■ private : 이 속성을 가지는 멤버는 외부에서 액세스할 수 없으며 구조체의 멤버 함수만 액세스할 수 있다. 외부에서는 프라이비트 멤버를 읽을 수 없음은 물론이고 존재 자체도 알려지지 않는다.
■ public : 이 속성을 가지는 멤버는 외부로 공개되어 누구나 읽고 쓸 수 있고 함수의 경우는 호출할 수 있다. 구조체가 자신의 속성이나 동작을 외부로 공개하는 수단이 되며 퍼블릭 멤버를 소위 인터페이스라고 한다.
■ protected : private와 마찬가지로 외부에서는 액세스할 수 없으나 단, 상속된 파생 클래스는 이 멤버를 액세스할 수 있다. 프라이비트 멤버는 파생 클래스에서조차도 참조할 수 없으며 오로지 자신만이 이 멤버를 참조할 수 있다는 점이 다르다.
클래스 멤버(class 키워드를 사용하여 선언된 클래스 형식의 멤버)에 대한 기본 액세스는 private이고, struct 및 union 멤버에 대한 기본 액세스는 public이다. 두 경우 모두 public, private 또는 protected 키워드를 사용하여 현재 액세스 수준을 변경할 수 있다.