📘프로그래밍/C#
[C#] 09 생성자 / 소멸자
bohemdev1
2024. 10. 31. 03:34
정의
생성자(Constructor) 란?
객체의 생성과 동시에 자동으로 한 번 호출되는 메소드
소멸자(Destructor) 란?
객체의 메모리가 소멸될 때 자동으로 한 번 호출되는 메소드
기능
생성자
생성자의 선언 방법은 다음과 같습니다.
클래스명 () { ··· }
클래스명 ( 매개변수1, 매개변수2, ··· ) { ··· }
주요 특징은 다음과 같습니다.
- 생성자의 이름은 반드시 해당 클래스명과 일치해야 합니다.
- 오버로딩이 가능합니다. 매개변수가 없는 형식은 기본 생성자 입니다.
- 주로 클래스 객체 생성함과 동시에 멤버 변수들을 초기화 하려는 목적으로 사용됩니다.
다음은 생성자를 이용한 클래스 객체 생성 예시입니다.
#1 Monster 클래스 선언
/* #1 몬스터의 기본 정보를 나타내는 Monster 클래스 */
public class Monster
{
public string m_Name;
public int m_Hp;
public float m_Power;
public void PrintInfo()
{
Debug.Log($"몬스터명({m_Name}) : 체력({m_Hp}) 힘({m_Power})");
}
/* 기본 생성자 */
public Monster()
{
m_Name = "더미";
m_Hp = 0;
m_Power = 0.0f;
}
/* 매개변수를 받는 생성자 */
public Monster(string name, int hp, float power)
{
m_Name = name;
m_Hp = hp;
m_Power = power;
}
}
#2 Monster 클래스 객체 생성
/* #2 Monster 클래스 객체 A B 생성 */
void Start()
{
Monster A = new Monster();
Monster B = new Monster("바람 드래곤", 2000, 7.5f);
A.PrintInfo();
B.PrintInfo();
}
/*
몬스터명(더미) : 체력(0) 힘(0)
몬스터명(바람 드래곤) : 체력(2000) 힘(7.5)
*/
소멸자
소멸자의 선언 방법은 다음과 같습니다.
~클래스명 () { ··· }
주요 특징은 다음과 같습니다.
- 소멸자의 이름은 반드시 해당 클래스명과 일치해야 합니다.
- 소멸자는 매개변수를 가지지 않습니다.
- 오버로딩이 불가합니다.
- 주로 더 이상 사용하지 않는 객체의 메모리를 회수하는 목적으로 사용합니다.
유니티의 경우 자동으로 사용하지 않는 객체에 할당된 메모리를 회수하는 Garbage Collection 이 존재하므로 보통의 경우 소멸자 선언 및 호출을 생략합니다.