안녕하세요. 취업한 공대누나입니다.
지난 시간에는 클래스에 대해 공부를 했었는데요.
오늘은 생성자에 대한 이야기를 해보겠습니다.
1. 생성자 (Constructor)란?
클래스를 정의한 후 객체를 생성하게 되면 메모리에 할당이 되게 됩니다.
이 때 멤버 변수들은 초기화되지 않은 상태라서 사용할 수가 없는데요.
C++에서는 객체의 생성과 동시에 멤버 변수를 초기화 해주는 생성자 함수가 있습니다.
우리는 이러한 생성자를 이용해서 보다 쉽게 객체를 선언하고 사용할 수 있습니다.
생성자는 일반적으로 클래스의 멤버 변수를 적절한 기본값 또는 사용자 제공 값으로 초기화 할 때 사용합니다. 또한 외부에서 클래스를 생성함과 동시에 사용해야 하므로 public 영역에 만들어야 합니다.
생성자를 이용하는 함수에는 중요한 특징이 있는데요.
1) 반환 자료형이 없다
2) 생성자 이름은 클래스 이름과 같아야 한다.
(이건 나중에 소멸자도 마찬가지입니다. 소멸자는 앞에 ~가 붙습니다.)
클래스에 다른 생성자가 없으면 컴파일러는 자동으로 기본생성자를 생성하게 됩니다.
이를 암시적 생성자라고 하는데요. 이 때 멤버 변수를 초기화 하지는 않습니다.
왼쪽 사진이 클래스 선언부이고 오른쪽이 main 함수입니다.
TEST 객체를 생성하여 TEST 클래스의 생성자 함수가 호출된 것을 확인할 수 있습니다.
Print 함수만 실행했는데 test_num이라는 값이 1로 초기화 된 것이 보이시죠?
이것이 바로 생성자가 멤버 변수를 1로 초기화 한 것입니다.
이와 같이 매개 변수를 갖지 않거나 모두 기본값이 설정된 매개 변수를 가지고 있는 생성자를 우리는 기본 생성자(default constructor)라고 합니다.
2. 생성자 다중 정의
생성자도 일종의 함수이기 때문에 다중 정의할 수 있습니다.
어떤 생성자를 호출해야 할지는 컴파일러가 매개변수를 보고 판단하여 결정하게 됩니다.
사용하는 방법은 오른쪽 사진을 참고해주시면 됩니다.
3. 생성자 초기화 목록
생성자 함수에서 멤버 변수 값을 초기화 하는 방법은 아래와 같이 해도 됩니다.
이를 생성자 초기화 목록이라고 하는데요.
콜론(:)을 이용하며 아래와 같이 작성해주시면 됩니다.
초기화 하려는 변수가 여러개이면 ,를 이용해서 나열해주시면 됩니다.
멤버 변수가 참조자 형식이면 이와 같은 방법으로 초기화 해야합니다.
(자세한 내용은 다음 포스팅을 참고해주세요)
다음 시간에는 생성자의 추가 내용과 소멸자에 대해 알아보도록 하겠습니다.
'전자 공학 > C언어 C++' 카테고리의 다른 글
[C++ 독학하기] 12. this 포인터 (0) | 2021.03.14 |
---|---|
[C++ 독학하기] 11. 생성자와 소멸자 (0) | 2021.03.12 |
[C++ 독학하기] 8. 인라인 함수 개념 (0) | 2021.03.04 |
[C++ 독학하기] 7. 함수 다중 정의, 오버로딩 개념 (0) | 2021.03.02 |
[C++ 독학하기] 6. 디폴트 매개변수란? (0) | 2021.02.28 |