[C++] 클래스와 객체
캡슐화 : 객체의 구성 요소들을 캡슐로 싸서 보호하고 볼 수 없게 하는 것(객체의 가장 본질적인 특징)
※ 일부는 공개함 -> 객체들이 서로 정보를 교환하고 통신하기 위해서
클래스 : 객체를 정의하는 틀
객체 : 멤버 함수(행동 behavior)와 멤버 변수(객체의 상태 state)로 구성
<클래스 선언부>
<클래스 멤버>
변수와 함수로 구성
멤버 변수
멤버 함수
- 원형형태로 선언
- 리턴 타입, 매개 변수 리스트 등이 모두 선언되어야 함
<접근 지정자>
public 멤버 : 클래스의 일부 멤버들을 다른 클래스와의 통신을 위해 외부에 공개함
private 멤버 : 클래스 내의 멤버 함수들에게만 접근이 허용됨
protected 멤버 : 클래스 내의 멤버 함수와 이 클래스를 상속받은 파생 클래스의 멤버 함수에게만 접근이 허용됨
※ 접근 지정의 디폴트 = private
※ 멤버 변수는 private으로 지정하는 것이 바람직함
※ 생성자는 public으로 지정
<클래스 구현부>
double : 함수의 리턴 타입
Circle : 클래스 이름
:: : 범위 지정 연산자
getArea() : 멤버 함수명과 매개 변수
※ 클래스 선언과 구현의 분리의 이유 : 클래스의 재사용을 위해서 (다른 C++파일에서는 클래스의 선언부만 필요)
- 객체가 생성되면 클래스 크기의 메모리가 할당됨
- 객체의 멤버접근은 C언어의 class와 똑같이 하면 됨
<생성자>
생성자(constructor) 라는 특별한 멤버 함수를 통해 객체를 초기화 함
- 생성자의 목적은 객체가 생성될 때 필요한 초기 작업을 위함임
- 생성자 함수는 오직 한 번만 실행
- 생성자 함수의 이름은 클래스 이름과 동일하게 작성
- 생성자 함수의 원형에 리턴 타입을 선언x
- 생성자는 중복o
<위임 생성자>
Circle() 생성자가 호출되면 Circle() 생성자는 자신의 코드를 실행하기 위해 Circle(1)을 호출
Circle() = 기본 생성자 (디폴트 생성자 default constructor)
매개 변수 없는 생성자
생성자가 하나도 없는 경우에 컴파일러는 자동으로 기본 생성자를 삽입함
but 생성자가 하나라도 선언된 클래스의 경우 컴파일러는 기본 생성자를 자동 삽입x
※ 생성자가 하나 선언된 상태에서 기본 생성자를 호출한다면 오류 발생
<소멸자>
- 소멸자의 목적은 객체가 사라질 때 필요한 마무리 작업을 위함임
- 소멸자의 이름은 클래스 이름 앞에 ~를 붙인다
- 소멸자는 리턴 타입x 어떤 값도 리턴x
- 소멸자는 오직 한 개만 존재, 매개 변수x
- 소멸자가 선언되어 있지 않으면 기본 소멸자가 자동으로 생성됨
<생성자/소멸자 실행 순서>
생성된 순서의 반대순으로 소멸됨
<헤더 파일과 cpp 파일 분리>
cpp 파일에 해당 헤더파일명 ex) "sub.h"를 선언
ex)
'언어 > C++' 카테고리의 다른 글
[C++] 함수와 참조, 복사 생성자 (0) | 2019.05.24 |
---|---|
[C++] 객체 포인터와 객체 배열 & 동적 생성 (0) | 2019.05.22 |
[C++] 화면 출력/입력 (0) | 2019.04.10 |
댓글