●정보은닉
- 객체 외부에서 객체 내의 멤버변수에 직접 접근하는 것을 허용하지 않고 객체 내의 변수는 private로 선언하고 여기에 접근하는 멤버함수를 public로 선언하는 기법을 정보은닉이라고 한다.
- 아래 코드에서처럼 멤버변수는 private로 선언하고 private로 선언한 변수에 접근하는 멤버함수를 선언한다.
- 일반적으로 멤버변수에 데이터를 입력하는 함수는 setter함수, 데이터를 가져오는 함수를 getter함수라고 한다.
ex)
●캡슐화
- 연관있는 데이터와 함수를 하나의 클래스로 만드는 것이다.
- 사용,수정,삭제 등 유지보수의 편의를 위해 하나의 클래스로 만든다.
- 개념은 간단하지만 캡슐화를 잘 하려면 많은 경험과 객체지향에 대한 이해,공부가 필요하다.
●생성자
- 객체 생성과 동시에 초기화하게 해준다.
- c++의 경우 아래와 같이 멤버를 초기화 할 수 없다.(java,c#은 가능)
- 생성자는 함수이고, 클래스와 같은 이름을 가지고, 리턴 타입을 선언하지 않는다.
ex)
- 매개변수가 있는 생성자
ex)
- 생성자를 정의 하지 않았을 경우 디폴트 생성자가 자동으로 생성된다.
- 생성자도 함수이므로 오버로딩이 가능하고 디폴트 매개 변수 설정도 가능하다.
- 프로그래머가 정의해 놓은 생성자가 하나라도 있으면 디폴트 생성자는 자동으로 삽입되지 않는다.
●소멸자
- 소멸자는 함수이다.
- 클래스의 이름과 동일하고 앞에 '~'가 붙는다.
- 리턴하지 않고 리턴타입을 선언하지 않는다.
- 매개변수를 받을 수 없다.
- 오버로딩 불가능하고 디폴트 매개변수 선언도 불가능하다.
- 생성자에서 메모리 동적 할당을 할 경우, 이를 해제하기 위해 반드시 소멸자를 정의해야한다.
- 메모리 동적 할당되지 않으면 반드시 사용할 필요는 없다.
- 소멸자를 정의하지 않으면 디폴트 소멸자가 생성된다.
'프로그래밍 > c++' 카테고리의 다른 글
c++ 복사생성자 (0) | 2013.06.19 |
---|---|
c++ 클래스(class) 3 (0) | 2013.06.19 |
c++ 클래스(class) 1 (0) | 2013.06.16 |
c++ 레퍼런스(Reference) (0) | 2013.06.13 |
c++ 네임스페이스(namespace) (0) | 2013.06.12 |
댓글