지금까지 객체를 생성하고 객체의 멤버변수 초기화를 목적으로 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


[1] 윤성우의 열혈 C++ 프로그래밍

+ Recent posts