C#에서 생성자는 클래스나 구조체가 인스턴스화될 때 자동으로 호출되는 특별한 메서드이다. 생성자의 주요 목적은 객체를 초기화하는 것으로, 필드 또는 속성에 초기 값을 할당하는 등의 작업을 수행할 수 있다. 생성자는 클래스 또는 구조체의 이름과 동일하며, 반환 형식을 지정하지 않는다. 생성자는 객체 지향 프로그래밍에서 중요한 역할을 하며, 클래스의 인스턴스가 올바르게 초기화되어 사용될 수 있도록 보장한다. 기본 생성자 기본 생성자(Default Constructor)는 매개변수를 받지 않는 생성자이다. 사용자가 명시적으로 생성자를 정의하지 않으면, C# 컴파일러는 기본 생성자를 자동으로 제공한다. 그러나 사용자가 어떠한 생성자라도 정의하면, 컴파일러는 기본 생성자를 자동으로 제공하지 않는다. public ..
생성자
다음과 같은 코드를 짰을 때, 컴파일러가 알아서 만들어주는 메소드들이 있다. 1. Constructor 2. Destructor 3. copy/move Constructor 4. copy/move Assignment : 일반적으로 Constructor는 직접 만들어주고 destructor을 포함한 나머지 5가지 메소드들은 직접 만들어주지 않는다. but 이렇게 포인터를 활용해서 리소스를 관리하게 되면 개발자가 직접 이 5가지의 메소드를 관리해 주어야 한다. 구글에서 c++ rule of three / rule of five 로 검색하게 되면 cppreference에서 관련 내용을 확인 가능하다. https://en.cppreference.com/w/cpp/language/rule_of_three The ..
멤버 생성 리스트에 대해서 알아보면, 크게 Class의 컨스트럭터와 디스트럭터가 있다. 1. Constructor : Object가 생성될 때 불러지는 함수. 클래스 이름과 같은 함수를 만들면 완성됨. 2. Destructor : Object가 없어질 때 불러지는 함수 클래스 이름 앞에 ~가 붙은 함수를 만들면 완성됨. ex) Compiler Explorer로 어셈블리 코드를 확인해 보면, 메인 함수 안에서 다른 함수를 부르는 call 명령어를 확인해 보면, 처음에 고양이 컨스트럭터 Cat::Cat(), 다음으로 Cat::speak(), 마지막으로 고양이 디스트럭터 Cat::~Cat() 가 순서대로 불려지는 걸 확인할 수 있다. 즉 컨스트럭터와 디스트럭터는 클래스 안에서 마법처럼 동작하는 것이 아니라, ..