생성자와 소멸자
cf. 생성자와 소멸자 모두 자동으로 호출되는 함수, 모두 return 값이 없고 void도 사용할 수 없다!
cf. 포인터를 사용하지 않는다면, for loop 등 한 블록이 끝나는 동시에 자동으로 소멸됨! (소멸자에 따로 정의 안해도)
생성자
ClassEx::ClassEx()
형태- 인자를 가질 수 있음
- 클래스의 객체 생성과 동시에 멤버 변수 초기화 가능. 클래스 이름과 동일한 이름으로 구현되며, return 값 없음
ClassEx::ClassEX(int a, int b)
: A(a), B(b) => 이런식으로 인자가 있는 생성자는 A, B 각각을 a, b로 초기화하는 역할을 함- 멤버함수와 마찬가지로
public
접근지정자로 지정해야 객체 생성 가능!
소멸자
ClassEx::~ClassEx()
형태- 인자를 가질 수 없음
클래스 선언과 정의
- 클래스 선언은
class ClassEx{void 함수명() ...]
이런식으로 하지만, 안에 포함되는 멤버 함수들에 대한 정의는 클래스 선언 안이 아닌 밖에서도 가능 void ClassEx::함수명()
보통의 경우,
- 멤버 변수 :
protected
나private
접근지정자
cf. protected : 상속받은 클래스(자식, 하위 클래스)나 자기 자신 클래스에서만 접근 가능 (private : 자기 자신에서만)
- 멤버 함수 :
public
접근지정자
따라서, 멤버 함수를 통해서만 간접적으로 멤버 변수에 접근 가능하도록 함
객체 초기화 방법 2가지
- 중괄호 {} 를 이용해 직접 값 대입
- ex.
Point obj = {10, 10};
: Point 클래스의 객체 obj의 멤버 변수 x, y에 각각 10, 10으로 초기화 시킴 - 단, 멤버 변수가 public에 선언되어 있을 때만 가능!
- 생성자를 이용한 초기화
- ex.
Point::Point(int x, int y){~~~}
// 인자 있는 생성자 함수 정의 - ex.
Point obj(10, 10);
orPoint obj = Point(10, 10);
// 생성자 함수 호출 - private에 선언된 멤버변수도 초기화 가능!
'[ 언어 및 문법 ] > 공통 개념(CS)' 카테고리의 다른 글
[CS] CMake, LIB, DLL (0) | 2022.08.13 |
---|---|
[CS] 헤더란 (*.h) & 다수의 파일로 관리하기 & <>, "" 차이 (0) | 2022.08.12 |
[CS] 빌드 과정 : 전처리 -> 컴파일 -> 링크 (+디버깅) (0) | 2022.08.12 |