C++ 생성자 (Constructor)

2021. 3. 12. 17:51·SW개발/C++
반응형

생성자 (Constructor)

  • 인스턴스가 처음 생성될 때 호출되는 함수

    • 멤버 변수부터 생성하고 그 다음 호출된다.

      • 멤버 중에 클래스가 있을 경우 해당 클래스의 생성자부터 호출된다.
      #include <iostream>
      
      class Second
      {
      public:
        Second()
        {
          std::cout << "Second constructor\n";
        }
      };
      
      class First
      {
        Second sec;
      
      public:
        First()
        {
          std::cout << "First constructor\n";
        }
      };
      
      int        main()
      {
        First test;
      }
      
      /* stdout
      Second constructor
      First constructor
      */

  • 생성자를 하나도 만들지 않으면 기본으로 다음과 같은 형태가 만들어진다.

    • 아무 것도 안하는 생성자

    • MyClass::MyClass() {}

    • 복사 생성자(Copy Constructor)


    • MyClass::MyClass(const MyClass& instance_in) { // 내부 값을 모두 복사하는 코드 }

  • 생성자의 파라미터에 기본값을 넣을 수 있다.

  • Uniform initialization과 Copy initialization의 차이

    • 형변환이 안된다. (1장 참고)
  • 기법

    • 생성자를 private으로 일부러 설정하는 기법도 존재한다.
  • 주의사항

    • 생성자의 인자가 하나도 없을 경우에만 소괄호를 생략한다.
      • 기본값 설정으로 인자를 넣지 않아도 될 경우에도 마찬가지이다.
      • #include <iostream> class Fraction { int numerator_; int denominator_; public: Fraction(const int& num = 1, const int& den = 3) { numerator_ = num; denominator_ = den; } void print() { std::cout << numerator_ << '/' << denominator_; } }; int main() { Fraction frac; // frac()으로 하면 안됨 frac.print(); } /* stdout stderr 1/3 */

멤버 초기화 리스트 (Member Initializer Lists)

위임 생성자(Delegating Constructor)

복사 생성자(Copy Constructor)

변환 생성자(Converting Constructor)


참고

  • MS 공식 홈페이지
반응형
저작자표시 (새창열림)

'SW개발 > C++' 카테고리의 다른 글

C++ 위임 생성자 (Delegating Constructor)  (0) 2021.03.12
C++ 멤버 초기화 리스트 (Member Initializer Lists)  (0) 2021.03.12
C++ 접근 지정자 (Access Specifier)  (0) 2021.03.12
C++ Class  (0) 2021.03.12
따라하며 배우는 C++ 8장  (0) 2021.03.12
'SW개발/C++' 카테고리의 다른 글
  • C++ 위임 생성자 (Delegating Constructor)
  • C++ 멤버 초기화 리스트 (Member Initializer Lists)
  • C++ 접근 지정자 (Access Specifier)
  • C++ Class
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 전체보기 (319)
      • SW개발 (268)
        • Java Spring (6)
        • C++ (186)
        • Python (21)
        • Linux (16)
        • 알고리즘 (13)
        • Git (4)
        • Embedded (1)
        • Raspberrypi (9)
        • React (3)
        • Web (2)
        • Windows Device Driver (6)
      • IT(개발아님) (46)
        • Windows (26)
        • MacOS (7)
        • Utility (11)
      • 챗봇 짬통 (0)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백기선
    dism
    spring
    Solaris 10
    스프링
    로지텍 마우스 제스처
    윈도우 명령어
    SunOS 5.1
    Windows 11
    java
    맥북 카카오톡 알림 안뜸
    windows
    그림판
    SFC
    알림
    unix
    Workspace
    윈도우
    EXCLUDE
    스프링 프레임워크 핵심 기술
    KakaoTalk
    vscode
    MacOS
    logi options
    mspaint
    시스템 복구
    citrix workspace
    제외
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
C++ 생성자 (Constructor)
상단으로

티스토리툴바