본문 바로가기

System Programmings/C++

[C++] 클래스에서 static과 소멸자 역할 확인

반응형
#include <iostream>
using namespace std;

class ask
{
public:
	static int cnt; // 객체 생성시 객체 생성수 카운트
	static void print();
	int obj;
	ask();
	ask(const ask& pt);
	~ask(); // 소멸자
};

int ask::cnt=0; // static 변수 초기화

void ask::print()
{
	cout << cnt << endl;
}

ask::ask()
{
	obj=0;
	cnt++; // 객체 생성시 카운트 업
}
ask::ask(const ask& pt)
{
	obj=pt.obj;
	cnt++; // 객체 생성시 카운트 업
}

ask::~ask()
{
	cnt--; // 객체 해제시 카운트 다운
}

void f();

int main()
{
	ask a;
	ask::print(); // static이므로 객체가 아닌 클래스가 소유 -> 클래스::함수();

	ask b; // 2번째 객체 생성
	ask::print();

	f(); // 함수 호출해서 소멸자의 역할 확인
	ask::print(); // f()함수 종료 후의 객체 수 확인
	return 0;
}

void f()
{
	ask c;
	ask d; // 2개의 객체 생성
	ask::print();
}
반응형