지금까지 객체를 생성하고 객체의 멤버변수 초기화를 목적으로 InitMembers라는 이름의 함수를 정의하고 호출했다. 정보은닉을 목적으로 멤버변수들을 private로 선언했으니 이는 어쩔 수 없는 일이다.
'생성자'를 이용하면 객체도 생성과 동시에 초기화할 수 있다.
생성자(Constructor)
class SimpleClass
{
private:
int num;
public:
SimpleClass(int n) // 생성자 (constructor)
{
num = n;
}
int GetNum() const
{
return num;
}
};
- 클래스의 이름과 함수의 이름이 동일하다.
- 반환형이 선언되어 있지 않으며, 실제로 반환하지 않는다.
위의 특징을 가지는 유형의 함수를 가리켜 생성자라 하며, 객체 생성시 딱 한번 호출되는 특징을 가지고 있다.
이전에 생성자를 정의하지 않았을 경우 다음과 같은 방식으로 객체를 생성했다.
SimpleClass sc; // 전역, 지역 및 매개변수의 형태
SImpleClass * ptr = new SimpleClass; // 동적 할당의 형태
생성자가 정의되었으니, 객체생성과정에서 자동으로 호출되는 생성자에게 전달할 인자의 정보를 다음과 같이 추가해야 한다.
SimpleClass sc(20); // 생성자에 20을 전달
SimpleClass * ptr = new SimpleClass(30); // 생성자에 30을 전달
- 생성자도 함수의 일종으로 오버로딩이 가능하다.
- 생성자도 함수의 일종으로 매개변수에 디폴트 값을 설정할 수 있다.
Reference
'Interest > 기타' 카테고리의 다른 글
VI 기능 단축키 (0) | 2020.03.18 |
---|---|
char에서 LPWSTR로 변환할 수 없습니다 해결법 (0) | 2020.03.18 |
[C++ 프로그래밍] Const 함수 (0) | 2020.03.16 |
[C++ 프로그래밍] 정보은닉과 캡슐화 (0) | 2020.03.16 |
[C++ 프로그래밍] 클래스와 구조체 차이 (0) | 2020.03.16 |