C++ 초기화 (Initialization)

2021. 3. 9. 19:18·C++/Syntax

초기화 (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 등의 옵션으로 최적화를 해서 릴리즈를 하는 것 같은데, 초기화까지 해주는지는 모르겠다.

저작자표시 (새창열림)

'C++ > Syntax' 카테고리의 다른 글

C++ 소수점 (Decimal Point)  (0) 2021.03.09
C++ 자료형 (Data Type)  (0) 2021.03.09
C++ 전처리기 (Preprocessor)  (0) 2021.03.09
C++ Namespace  (0) 2021.03.09
C++ 헤더가드 (Header Guard)  (0) 2021.03.09
'C++/Syntax' 카테고리의 다른 글
  • C++ 자료형 (Data Type)
  • C++ 전처리기 (Preprocessor)
  • C++ Namespace
  • C++ 헤더가드 (Header Guard)
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 분류 전체보기 (317)
      • Algorithm (13)
        • 알기 쉬운 알고리즘 (10)
        • Search (1)
        • Sort (2)
      • Arduino (0)
      • C++ (185)
        • Class (46)
        • Exception (6)
        • Library (51)
        • Overloading (10)
        • SmartPointer (5)
        • Syntax (33)
        • TBC++ (23)
        • Templates (9)
        • VisualStudio (2)
      • Embedded (1)
      • Git (4)
      • Java (5)
      • Linux (16)
        • Error (1)
        • Linux Structure (11)
      • MacOS (7)
      • OS (1)
        • Concurrency (1)
      • Python (21)
        • Class (1)
        • Function (2)
        • Syntax (17)
      • Raspberrypi (9)
      • Review (1)
      • Utility (12)
        • VSCode (5)
        • VirtualBox (3)
      • Web (8)
        • Nginx (1)
        • React (3)
        • Django (1)
      • Windows (20)
        • Registry (3)
        • WSL (1)
        • DeviceDriver (6)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바