생성자
-객체가 생성될 때 생성과 동시에 초기화하기 위해 호출됨
-객체 생성 할 때만 한번만 호출됨
생성자 형태
-클래스의 이름과 함수의 이름이 동일
-반환형 x, 실제로 반환 x
생성자 특징
-오버로딩 가능(생성자도 함수의 일종이라)
-매개변수에 디폴트 값 설정 가능
객체의 생성과정
1.메모리공간의할당
2.initializer를 이용한 멤버변수의 초기화
3.생성자의 몸체부분 실행
생성자 예시 코드
멤버 이니셜라이저(Member Initializer)
-멤버변수를 선언과 동시에 초기화(그런 형태로 바이너리 코드가 구성됨)
-initializer는 멤버변수로 선언된 객체의 생성자 호출에 활용됨
멤버 이니셜라이저 장점
-초기화의 대상 명확히 인식
-성능에 이점
멤버 이니셜라이저 예시 코드
멤버 이니셜라이저를 이용한 const상수 초기화
-const멤버변수(선언과 동시에 초기화해야함)도 이니셜라이저를 이용해만 초기화 가능(이니셜라이저를 이용하면 선언과 동시에 초기화가 이뤄지는 형태이기 때문에 )
멤버 이니셜라이저를 이용한 참조자 선언
-참조자도 선언과 동시에 초기화가 이루어져야 되기 때문에 이니셜라이저를 통해서만 초기화 가능
private 생성자
-클래스 내부에서만 객체의 생성을 허용하는 목적으로 사용함
<주의할점>
Rectangle rec() - 이렇게 하면 함수 원형 선언과 표현이 겹치기 때문에 사용 불가 (x)
Rectangle rec; - 이렇게 생성해야함
Rectangle rec(100); - 매개변수가 있는 경우
Rectangle* rec1=new Rectangle; - 표현 가능
Rectangle* rec2=new Rectangle(); - 동적할당할 때는 이렇게 표현가능
Rectangle* rec3=new Rectangle(100);
============================================================================
소멸자
-객체소멸시 반드시 호출됨
-소멸자는 생성자에서 할당한 리소스의 소멸에 사용
소멸자 형태
-클래스의 이름 앞에 '~'가 붙음
-반환형 x, 실제로 반환 x
-매개변수는 void형으로 선언되기 때문에 오버로딩,디폴트 값 설정 불가
-소멸자 명시해주지 않으면 디폴트 소멸자가 자동으로 삽입됨
소멸자 예시