C++ 초기화 (Initialization)

2021. 3. 9. 19:18·SW개발/C++
반응형

초기화 (Initialization)

  • C에서는 솔직히 별로 의미가 없었다고 생각하는데, C++에서는 생성자의 개념 때문에 중요한 것 같다.

  • 메모리를 할당함과 동시에 값을 부여한다.


할당

  • 생성자에서 값을 대입하는 방식이다.

    int num;
    num = 42;

초기화

  • 초기화 리스트로 지정

  • Copy Initialization

    • 등호를 통해 초기화하는 방식이다.
    int width = 5;
  • Direct Initialization

    • 소괄호로 값을 감싸서 초기화하는 방식이다.
    int width(5);
  • Uniform Initialization

    • List Initialization, Brace Initialization

    • C++11

    • 위의 두 가지(Copy Initialization, Direct Initialization)보다 더 엄격하다.

      ex) int에 float을 저장하면 에러가 발생한다. (위의 두 가지는 warning이라 실행은 된다.)

      int width{ 5 };     // direct uniform initialization(preferred)
      int width = { 5 };  // copy uniform initialization
  • MS의 Visual Studio의 경우 Debug, Release 모드가 있다.

    • Release 모드의 경우 자료형에 따라 기본적인 초기화를 해준다.

    • Debug 모드에서 초기화를 하지 않으면 MS에서 정한 magic debug value가 들어간다.

      ex. 0xcccccccc : 초기화 하지 않은 스택 영역에 들어가는 값

    • Magic debug value

      • 위키피디아 Magic number - Debug values

      • 스택오버플로우

  • gcc의 경우 O2, O3 등의 옵션으로 최적화를 해서 릴리즈를 하는 것 같은데, 초기화까지 해주는지는 모르겠다.

반응형
저작자표시 (새창열림)

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

따라하며 배우는 C++ 2장  (0) 2021.03.09
C++ 전처리기 (Preprocessor)  (0) 2021.03.09
C++ Namespace  (0) 2021.03.09
C++ 헤더가드 (Header Guard)  (0) 2021.03.09
따라하며 배우는 C++ 1장  (0) 2021.03.09
'SW개발/C++' 카테고리의 다른 글
  • C++ 전처리기 (Preprocessor)
  • C++ Namespace
  • C++ 헤더가드 (Header Guard)
  • 따라하며 배우는 C++ 1장
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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
C++ 초기화 (Initialization)
상단으로

티스토리툴바