[C++] 03-3. 접근 지정자 (private, public, protected)

SunowMin·2023년 10월 1일
0

C++

목록 보기
6/8

1. 접근 지정자

  • C++에는 다음 3가지 멤버 접근 지정자(access specifier)가 존재

① private 멤버 (비공개)

private 접근 지정으로 선언된 멤버로서, 클래스 내의 멤버 함수들에게만 접근 허용

② public 멤버 (공개)

public 접근 지정으로 선언된 멤버로서, 클래스 내외를 막론하고 프로그램의 모든 함수들에게 접근 허용

③ protected 멤버 (보호)

protecte 접근 지정으로 선언된 멤버로서, 클래스 내의 멤버 함수와 이 클래스를 상속받은 파생 클래스의 멤버 함수에게만 접근 허용


  • 멤버에 대한 접근 지정
    : 멤버에 대한 접근 지정은 클래스 선언부에서 접근 지정자 다음에 콜론(:)을 찍고 멤버들을 선언
  • 접근 지정은 여러 번 사용될 수 있고, 접근 지정자가 선언되면 다른 접근 지정자가 선언될 때까지 모든 멤버에 대해 적용됨
class Sample {
private : 
	// private 멤버 변수 선언. 
public : 
	// public 멤버 변수 선언. 
protected :
	// protected 멤버 변수 선언. 
};




2. 디폴트 접근 지정은 private

  • 캡슐화의 기본 원칙이 비공개이기 때문




3. 멤버 보호와 생성자

  • 멤버 변수는 private으로 지정하고, 생성자는 public으로 선언하는 것이 바람직
  • 멤버 변수를 public으로 선언했을 시, 노출된 멤버는 다른 클래스나 외부 함수에서 접근이 가능함
    ⇒ 멤버 변수의 값을 맘대로 수정할 수 있음
  • 따라서, 생성자를 public으로 선언하여 생성자를 통해 멤버 변수에 접근할 수 있도록 하는 것을 추천

생성자는 항상 public으로 선언해야 하는가?
생성자가 public이 아니면 외부에서 객체를 생성할 수 없음. 그러면 생성자는 항상 public으로 선언해야 하는가?
⇒ ❌, 의도적으로 외부에서 객체를 생성할 수 없도록 생성자를 private으로 선언하기도 하고, 자식 클래스에서만 생성자를 호출하도록 protected로 선언하기도 함

0개의 댓글