C++복습

C++복습) 클래스 캡슐화(은닉성)

PJNull 2021. 11. 20.
728x90
반응형

 

캡슐화

 

객체의 캡슐화는 클래스 안의 속성 및 함수를

외부에 감추는 방법으로는 언어적 측면에서 접근지정자(public/private/protected)를 두어 은닉의 정도를 기술하여 구현하는 것을 의미한다.

접근지정자에 의해 제한된 멤버들은 컴파일러에 의해 판단된다. 언어적 측면에서 접근지정자에 의해 정의된 해당 멤버변수나 멤버함수는 코드 중에 접근방식을 위반한 코드를 작성하면 컴파일 오류로 처리하고 실행코드 생성을 제한한다.

또한 다른 경로로 접근하기를 유도할때도 사용하는 방법이다.

 

 

public:모든 접근을 허용함

private:자기 클래스 내부에서만 접근을 허용함

protected:자기 클래스 내부와 상속받은 자식 클래스에서만 접근을 허용함.

 

 

 

 

다른 경로로 접근하기를 유도

 

클래스 내부의 메소드들을 직접적으로 제어할 경우 예기치 못하는 오류나 코드 가독성이 떨어질수 있기 때문에

메소드들을 private로 막고 이것을 제어하는 함수를 만들어서 사용하는것이 일반적이다.

class Player
{
public:
 void SetHp(int hp)
 {
  _hp=hp;
  if(_hp<=0)PlayerDie(); //PlayerDie를 실행하기 위해서는 SetHp를 이용해야만함
 }
 private:
 void PlayerDie(){cout<<"Die";}
 int _hp=100;
};

 

 

상속접근지정자

 

 

public: 

상속받은 설계대로 상속을 시킨다(public->public, protected->protected)

private: 

더이상 상속시키지 않겠다.(public->private, protected->private)

protected: 

자신의 자식클래스한테만 상속시키겟다(public->protected,protected->protected)

 

※주의) 기본적으로 C++에서는 상속접근지정자를 기입하지않으면 private로 지정이된다.

728x90
반응형

'C++복습' 카테고리의 다른 글

C++복습) Modern C++/ Auto  (0) 2021.12.22
C++복습) 생성자 맴버 초기화 리스트  (0) 2021.11.22
C++복습) 다형성  (0) 2021.11.21
C++복습) 클래스 상속성  (0) 2021.11.20
C++ 복습) 클래스생성자와 소멸자  (0) 2021.11.19

댓글