접근 제한의 필요성
클래스의 멤버에 아무런 제약 없이 값을 대입하게 되면 뜻하지 않은 오류가 생길 수 있습니다. (예를 들면, 동물의 다리 개수를 입력하는데 -값이 들어갈 수는 없습니다.)
그렇기 때문에 접근을 제한해야 할 필요가 생깁니다.
저희는 제한자를 사용해 접근을 제한하는 방법을 알아보겠습니다.
private
클래스 외부에서 마음대로 접근할 수 없는 멤버를 만드는 기능을 지원하는데 이런 멤버를 private멤버라고 합니다.
이 경우 다른 함수내에서 대입이 불가능합니다.
public
클래스 외부에서도 멤버에 마음대로 접근할 수 있도록 해주는 기능입니다.
함부로 접근할 수 없는 기능은 좋지만, 필요에 따라서 접근해서 값을 변경해야 하는 경우도 있습니다.
이럴 때는 public을 사용합니다.
public으로 된 멤버들은 다른 함수에서 사용할 수 있습니다.
또한, 멤버 함수 안에서는 멤버를 바꿀 수 있으므로, private으로 된 멤버의 값을 바꿀 수 있습니다.
캡슐화
클래스의 데이터 멤버와 멤버 함수를 모아놓고, 함부로 건드리고 싶지 않은 멤버에 private을 붙여 접근을 제한하는 기능을 말합니다. 클래스의 가장 중요한 기능 중 하나입니다.
접근 지정자
앞에서 설명했던 private, public 등을 말합니다. 이것은 생략도 가능하며, 클래스에서 생략하는 경우 기본적으로 private으로 설정됩니다. C++에서는 구조체에도 이 기능을 사용할 수 있습니다. 구조체에서 생략하는 경우에는 기본적으로 public이 됩니다.
private, public 이외에도 다른 접근 지정자들이 있습니다. 나머지는 뒤에서 설명합니다.
인라인 멤버 함수
접근 지정자 public을 이용해 private멤버를 다루려면 멤버 함수를 자주 사용해야 하는 경우가 생깁니다.
함수를 자주 호출하면 그만큼 프로그램의 속도가 저하될 수 있기 때문에 인라인 함수로 멤버 함수를 만들면 속도를 개선할 수 있습니다.
인라인 멤버 함수를 만드는 방법은 클래스를 선언할 때 멤버 함수를 정의해주면 됩니다.
위와 같이 GetSize( ) 인라인 함수가 잘 작동하는 것을 볼 수 있습니다.
'C++' 카테고리의 다른 글
[18] 생성자 (0) | 2021.05.03 |
---|---|
[17] 인수와 객체 (0) | 2021.05.02 |
[15] 클래스 (0) | 2021.05.02 |
[14] typedef, 구조체, 공용체 (0) | 2021.05.01 |
[13] 파일 분할 (0) | 2021.05.01 |