반응형

.** 본 게시물은 C++을 복습하며 정리하는 글입니다. 틀린 부분이 있다면 지적 부탁드립니다!! 현재 "윤성우의 열혈강의 C++"교재로 공부중이며 좀 더 상세한 설명을 원하시는 경우에는 책을 구매해서 찾아보시길 권장합니다.





[들어가기 전]


C++은 객체지향 언어이며 객체를 표현하기 위해 클래스를 사용한다. 


하나의 객체를 표현하는 클래스 생성 시, 

  1) 해당 클래스 내부의 모든 정보에 대해 접근 및 변경이 가능하다면 해당 클래스는 보안에 

      최적화된 클래스라고 볼 수 있는가?

  2) 해당 클래스에 접근할 수 있는 방법을 제한하지 않는다면 프로그래머의 실수는 어떻게

      대비 할 것인가?




[설명]


[들어가기 전]에 제시된 2가지 문제에 대한 대책으로 "정보은닉(Information Hiding)" 기법 들 수 있다.


정보은닉의 역할)

제한된 방법으로의 접근만 허용

=> 잘못된 값이 저장되지 않도록 도움

=> 안전한 형태로 해당 클래스의 멤버변수 접근을 유도

=> 프로그래머가 실수를 했을 경우 실수가 쉽게 발견됨


정보은닉을 위한 방법)

정보은닉을 하기 위해선 C++에서 제공하는 "접근지시 제어자"를 사용하면 된다.

=> 멤버변수를 private으로 선언하고, 해당 변수에 접근하는 함수를 별도로 정의.


ex)


정보은닉을 위해 멤버변수를 private 접근 가능하도록 선언하였으며, 해당 멤버변수에

안전하게 접근하기 위해 public 권한의 GetVal()/SetVal() 함수를 선언하였다.

 => 이렇게 멤버변수에 접근하기 위해 선언된 함수를 "엑세스 함수"라고 한다.

      해당 함수는 사용하지 않더라도 선언해두는 경우가 많다.




[추가]


정보은닉 사용 후, 추가적인 안정성을 위해 const 함수를 사용하는 경우가 있다.


ex)

void ShowVal() const;

이렇게 추가된 const는 이 함수 내에서는 멤버변수의 값을 변경하지 않겠다는 의미가 있다.


ex)


위의 예제에서 cout<<GetVal()<<endl; 구문은 컴파일 에러가 난다. 왜냐하면

const 함수 내에는 const 함수만 사용 가능하기 때문이다.





반응형
Posted by tislqhf

블로그 이미지
개인적인 공부자료 정리하는 공간
tislqhf

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.9
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함