티스토리 친구하기

본문 바로가기

Robotics/C++

C++ 생성자 (Constructor)

728x90

- 객체 생성 시 자동으로 호출되는 함수

- 클래스의 이름과 이름이 똑같음

 

// my_class.hpp

#include <iostream>

class MyClass
{
  public:
    MyClass(); // 생성자
    void Print();

  private:
    uint16_t mVar;
};

 

헤더 파일에 "MyClass"라는 이름을 가진 클래스를 선언하였습니다. 그리고 클래스와 똑같은 이름으로 "MyClass()"라는 함수를  public으로 선언하였습니다.

여기서 클래스 이름과 똑같은 이름을 가진 "MyClass()" 함수를 생성자(Contructor)라고 합니다.

 

// my_time.cpp

#include "my_class.hpp"

MyClass::MyClass()  // 생성자
{
  std::cout << "Constructor" << std::endl;
}

void MyClass::Print() // 일반함수
{
  std::cout << "Print" << std::endl;
}

int main()
{
  MyClass my_class;
  my_class.Print();

  return 0;
}

 

위의 예제를 실행하면 아래와 같은 결과가 출력됩니다.

 

// 실행결과
Constructor
Print

 

일반 함수는 (당연하겠지만) 함수를 호출하는 코드를 작성해야 함수가 실행됩니다.

 

  my_class.Print();

 

하지만, 생성자는 객체를 생성하면 자동으로 호출됩니다.

 

  MyClass my_class;

 

위의 결과에서 "Contructor" 다음에 "Print"가 출력된 이유는, 

"my_class" 객체가 생성되고, 그다음에 "my_class.Print()" 함수가 호출되었기 때문입니다.

 

 

반응형