백지부터 시작하는 이세계 코딩 생활

Constructor ( 생성자 ), Destructor ( 소멸자 ) 본문

백지부터 시작하는 이세계 유니티 생활 since 2020

Constructor ( 생성자 ), Destructor ( 소멸자 )

조아덕 2020. 12. 9. 18:41
생성자 ( Constructor )

생성자란 객체 (Object) 를 인스턴스화 (Instantiate) 할 때 호출되는 매서드 (Method) 이다.

생성자(영어: constructor, 혹은 약자로 ctor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다.

new 키워드 위에 붙는 Method Name () 부분이 생성자를 호출하는 부분이다.
생성자는 클래스를 처음 만들 때 맴버변수나 상수를 초기화 하는 역할을 한다.
따라서 생성자는 클래스를 생성할 때만 호출한다.

 

디폴트 생성자로 클래스를 생성한 경우(왼쪽), 이름을 매개변수로 가지는 클래스를 생성한 경우 (오른쪽)

 

특징 :
* 생성자도 매서드의 일종으로 구조는 일반적인 매서드와 같다. 그러나 생성자와 다르게 생성자의 이름은 클래스의 이름과 같으며 반환타입 (return type) 을 갖지 않는다.
* 객체를 인스턴스화 할 때, 초기화 해줘야 하는 필드 (Field) 나 호출해야 하는 매서드를 포함시킬 수 있다.
* 오버로딩 (Overloading) 이 가능하다.
* 인스턴스 (Instance)를 만들기 위해 클래스는 생성자를 구현해야 한다. 따로 구현하지 않으면 컴파일 과정에서 생성해 준다. (디폴트 생성자 : Default Constructor )

 

디폴트 생성자 : Default Constructor
생성자 ( 매개변수 ) : Constructor

디폴트 생성자란 매개변수 (Parameter) 와 매서드 (Method) 가 없는 생성자이다.

using UnityEngine;

public class Human
{
    public string name;
    public int age;
    public float tall;

    public Human() { } // 생성자 ( Default Contructor )

    public Human(string _name, int _age, float _tall) // 생성자 ( Constructor with name, age, tall )
    {
        this.name = _name;
        this.age = _age;
        this.tall = _tall;
    }
}
using UnityEngine;

public class Constructor : MonoBehaviour
{
    public class People
    {        
        Human human = new Human();
        
        Human H = new Human("HamHuman", 20, 1209);
    }
}

 

Destructor ( 소멸자 )

소멸자는 객체가 사라질 때 자동으로 발생하는 매서드이다.
가비지 컬렉터(garbage collector)에 의해 객체가 소멸하는 시점을 판단하여 호출되는 매서드.
GC에 의해 소멸되기 때문에 매번 소멸되는 순서가 다를 수 있다.
GC에 의해 자동으로 처리되기 때문에 특별한 이유가 있지 않는한 구현하지 않는다. (성능과 효율적인 부분)

* 소멸자 이름은 클래스 이름과 같아야 하고 앞에 ~(물결표)를 적어주면 된다.
* 인수와 반환 값이 없다
* 상속되거나 오버로드 될 수 없으며, 사용자가 호출할 수도 없다.

using UnityEngine;

public class Constructor : MonoBehaviour
{
    public class People
    {        
        Human human = new Human();
        
        Human H = new Human("HamHuman", 20, 1209);
        
        ~Humna() // 소멸자 (Destructor)
    }
}

 


Ref

blog.hexabrain.net/141

 

C# 강좌 12편. 생성자와 소멸자(Constructor and Destructor) [최근 수정 2017.12.17]

1. 생성자(Constructor) 오늘은 생성자와 소멸자에 대해서 알아보도록 하겠습니다. 생성자와 소멸자를 간단히 소개하자면, 생성자는 객체를 생성할 때 호출되는 메소드이며, 소멸자는 객체를 소멸

blog.hexabrain.net

boycoding.tistory.com/249?category=1067100

 

C++ 09.09 - 소멸자 (Destructor)

소멸자 (Destructor) 소멸자는 객체가 소멸될 때 자동으로 실행되는 클래스의 멤버 함수다. 생성자는 클래스의 초기화를 돕도록 설계됐지만 소멸자는 청소를 돕도록 설계되었다. 지역에서 생성된

boycoding.tistory.com

 

https://ko.wikipedia.org/wiki/%EC%83%9D%EC%84%B1%EC%9E%90

 

생성자 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

 

Comments