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 |