Copy Initialization

int a = 123;

 

 

Direct Initialization

int a(123);

 

 

Unifrom Initialization

int b {123};

 

 

direct와 unifrom 초기화는 사용자 정의 데이터 타입을 초기화 할 때 많이 사용한다. 최근에는 uniform 초기화를 권장한다는 소리가 있다. 이는 uniform 초기화 방식이 더 엄격하기 때문이다.

 

예를 들어, Direct 초기화 방식을 사용하면,

#include <iostream>
using namespace std;

int main()
{
    int a(3.14);

    return 0;
}

 

에러가 아닌 warning 메시지만 띄운다. 출력 또한 3으로 잘된다. 이는 Copy 초기화 방식도 동일하다.

 

 

하지만, unifrom으로 초기화 시 컴파일 타임에 잡을 수 있으므로 안전하다.

#include <iostream>
using namespace std;

int main()
{
    int a{ 3.14 };
    cout << a;

    return 0;
}