생성자 : 객체가 생성될 때에 필드에게 초기값을 제공하고 필요한 초기화 절차를 실행하는 멤버 함수
-> 객체 자체에는 접근을 할수가 없으므로, 초기에 비공개 멤버변수를 초기화.
객체의 생성- 생성자 - 객체의 사용 - 소멸자 - 객체의 파괴
기본형식은
class Car
{
public :
Car() // 반환값이 존재하지 않는다.
{
초기화를 정의한다.
}
Car(){} // 중복정의가 가능하다.
Car() // 반환값이 존재하지 않는다.
{
초기화를 정의한다.
}
Car(){} // 중복정의가 가능하다.
}
- > 생성자는 객체를 사용하면 자동으로 생성된다
Car :: Car() 외부 정의도 가능하지만, 간결해서 보통 안에 적는다.
Car(int s, int g, string c) { } // 매개변수를 가지는 생성자
호출은 Car c1( 1, 2, "red" );
Car c2 = car(1, 2, "red") - > 이것은 먼저 임시 객체를 만들고 이것을 c4에 복사
소멸자
-소멸자는 클래스 이름에 ~가 붙는다.
-값을 반환하지 않는다.
-public 멤버 함수로 선언된다.
-소멸자는 매개 변수를 받지 않는다.
-중복 정의도 불가능하다.
class Car
{
public : ~Car() { }
}
----------------------------
동적할당을 사용한 생성자가 있을때 소멸자를 사용하면 좋다.
class Car {
int speed; // 속도
int gear; // 기어
char *color; // 포인터 형
public:
// 첫 번째 생성자
Car(int s, int g, char *c) {
speed = s;
gear = g;
color = new char[strlen(c)+1]; // 동적할당.
strcpy(color, c);
}
~Car() {
delete [] color; // 동적 메모리를 반납.
}
};
_____________________________________
이전 시간까지 배운 객체의 라이프 사이플
객체 생성(객체 초기화, 중복정의가 가능) - > 생성자 호출 -> 객체 사용 - > 소멸자(동적 메모리 반납) - > 객체 소멸
- > 생성자는 객체를 사용하면 자동으로 생성된다
Car :: Car() 외부 정의도 가능하지만, 간결해서 보통 안에 적는다.
Car(int s, int g, string c) { } // 매개변수를 가지는 생성자
호출은 Car c1( 1, 2, "red" );
Car c2 = car(1, 2, "red") - > 이것은 먼저 임시 객체를 만들고 이것을 c4에 복사
소멸자
-소멸자는 클래스 이름에 ~가 붙는다.
-값을 반환하지 않는다.
-public 멤버 함수로 선언된다.
-소멸자는 매개 변수를 받지 않는다.
-중복 정의도 불가능하다.
class Car
{
public : ~Car() { }
}
----------------------------
동적할당을 사용한 생성자가 있을때 소멸자를 사용하면 좋다.
class Car {
int speed; // 속도
int gear; // 기어
char *color; // 포인터 형
public:
// 첫 번째 생성자
Car(int s, int g, char *c) {
speed = s;
gear = g;
color = new char[strlen(c)+1]; // 동적할당.
strcpy(color, c);
}
~Car() {
delete [] color; // 동적 메모리를 반납.
}
};
_____________________________________
이전 시간까지 배운 객체의 라이프 사이플
객체 생성(객체 초기화, 중복정의가 가능) - > 생성자 호출 -> 객체 사용 - > 소멸자(동적 메모리 반납) - > 객체 소멸