728x90

생성자

- 객체가 생성될 때 자동으로 호출되는 함수

- 객체를 초기화시킬 수 있는 함수

- public 속성을 가진다

- 반드시 함수이름은 클래스명과 동일해야 한다

- 함수 오버로딩을 이용해서 정의할 수 있다. 

 

소멸자

- 어떤 클래스를 이용해서 생성한 객체가 메모리에서 해제될 때 자동으로 호출되는 함수

- 마무리 작업에서 유용

- public 속성을 가진다

- 반드시 함수이름은 클래스명과 동일해야 한다

- 함수 이름앞에 틸드 (~)기호를 붙여야 한다

 

 

생성자와 소멸자가 언제 나오는지 알 수 있는 코드:

#include <iostream>

using namespace std;

//생성자: 객체가 생성될 때 자동으로 호출되는 함수(객체 변수값 초기화시키기)
//소멸자: 객체의 사용이 끝나고 소멸될때 자동으로 호출되는 함수

class firstclass {

public:
	firstclass() {
		cout << "생성자가 호출되었습니다" << endl;

	}

	//소멸자는 클래스 이름과 똑같은 함수이름으로 설정하고 함수 앞에 ~ 붙임
	~firstclass() {
		cout << "소멸자가 호출되었습니다" << endl;

	}
};
int main() {

	firstclass A;

	cout << "main함수의 시작이다" << endl;
	cout << "main함수의 끝이다" << endl;


}

메인함수에서 동작하기 전에 생성자가 호출되고 메인함수가 처리 된 후 소멸자가 호출된 것을 볼 수 있다. 

 

 

#include <iostream>

using namespace std;

//생성자: 객체가 생성될 때 자동으로 호출되는 함수(객체 변수값 초기화시키기)
//소멸자: 객체의 사용이 끝나고 소멸될때 자동으로 호출되는 함수

class TV {
public:
	TV() {  //생성자 함수임
		poweron = true;
		channel = 20;
		volume = 20;
	}
	TV(bool po, int cha, int vol) {
		poweron = po;
		channel = cha;
		volume = vol;
	}

	bool poweron;
	int channel;
	int volume;
};

int main() {

	TV samsung;

	cout << "기본 전원 상태: " << samsung.poweron << endl;
	cout << "기본 채널 번호: " << samsung.channel << endl; 
	cout << "기본 볼륨 크기: " << samsung.volume << endl;
	cout << "----------------- " << endl;
	

	TV LG(true, 200, 20);

	cout << "기본 전원 상태: " << LG.poweron << endl;
	cout << "기본 채널 번호: " << LG.channel << endl;
	cout << "기본 볼륨 크기: " << LG.volume << endl;
	cout << "----------------- " << endl;



}

 

#include <iostream>

using namespace std;

class Time {

public:

	Time() {
		int hour = 11;
		int minute = 10;
		int second = 20;
	}

	Time(int h, int m, int s=0) {
		hour = h;
		minute = m;
		second = s;

	}
	int hour;
	int minute;
	int second;

};

int main() {
	Time t;
	Time t1(12, 20, 50);
	t.hour = 10;
	t.minute = 20;
	t.second = 30;

	cout << t.hour << "시" << t.minute << "분" << t.second << "초" << endl;
	cout << t1.hour << "시" << t1.minute << "분" << t1.second << "초" << endl;
}

멤버 변수가 클래스 바깥에 정의될 경우는 클래스 안에 함수 원형을 선언해서 사용

함수가 정의된 위치에서는 스코프연산자:: 사용

728x90

'언어는 과-학인가요? > C++' 카테고리의 다른 글

Protected, Private, Public 함수 : 이동시키기  (0) 2020.10.31
상속  (0) 2020.10.31
객체 지향 프로그래밍 (OOP)  (0) 2020.10.24
Namespace (이름공간)/ String  (0) 2020.10.10
C++ 입문  (0) 2020.10.10

+ Recent posts