본문 바로가기

캡슐화

(2)
[C++] OOP 캡슐화 - static, const 멤버 정적(static) 멤버 변수 일반적인 멤버 변수의 경우 인스턴스화를 거쳐 객체를 만들 경우 해당 클래스를 통해 만든 여러 객체마다 멤버 변수의 메모리가 각자 할당되어 서로 영향을 주지 않지만 static 멤버 변수의 경우 해당 클래스를 통해 만든 모든 객체가 동일한 메모리를 공유하기 때문에 어떤 객체에서 static 멤버 변수의 값을 변경한다면 다른 객체에서도 같이 변경된다. 즉, 클래스 내의 전역변수라고 생각하면 된다. class 클래스명{ static 변수타입 변수명; }; static 멤버 변수의 특징 선언은 클래스 내부에서 하지만 초기화는 생성자 등 클래스 내부에서 진행할 수 없고 파일 영역에서 진행한다. 전역 변수와 같이 프로그램 시작 시 생성되고 프로그램 종료 시 변수가 사라지므로 객체가 생..
[C++] OOP 캡슐화 - 프렌드(friend) 캡슐화는 공통의 속성이나 기능, 행동 등을 캡슐에 보관하는 것처럼 하나의 클래스로 묶는 것이다. 캡슐화에 속하는 개념인 정보은닉을 수행하기 위해 접근 제어자를 사용하여 외부에서 직접적인 접근이 불가능하고 해당 객체의 public 멤버함수를 통해서만 접근할 수 있다. 만약 private 멤버에 접근해야 하는 경우가 생겨 그때마다 매번 새로운 public 멤버 함수를 생성해 접근해야 한다면 굉장이 번거롭다. 이러한 경우를 대비해 friend라는 접근 제어 키워드를 제공한다. friend 키워드를 이용한 대상은 해당 객체에 private와 protected로 선언된 멤버에 접근할 수 있게 된다. friend 클래스명 or 함수명(필요시 매개 변수 목록); friend를 클래스나 함수에 사용할 때 정의에서는 사..