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

초기화 (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

  • 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