1. 중괄호 초기화

(1) 벡터(또는 이외의 컨테이너)

요소마다 다른 값을 push_back이 아닌 방법으로 초기화 할 수 있다.

vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);

vector<int> v1{ 1, 2, 3, 4 };

 

(2) 축소 변환 방지

축소 변환 ; 데이터가 그 값의 일부분을 손실한 채로 다른 타입으로 변환되는 것.

int형 데이터가 float형으로 변환될 때 값의 손실이 발생한다. 이를 방지할 수 있다.

 

 

(3) 클래스

class Knight
{
public:
    int _hp;
};

위와 같은 클래스가 있다고 하자.

int main()
{
    Knight k1; // 기본 생성자
    Knight k2 = k1; // 복사 생성자 (대입 연산자가 아님!!)

    Knight k3{ k2 };
    
	Knight k4{};
}

위와 같이 작성하면 k3 객체를 k2 객체의 값으로 초기화 할 수 있다.

또한 중괄호를 사용하여 기본 생성자를 호출할 수 있다.

 

- 단점

중괄호 초기화를 이용하기 위하여 클래스에서 initializer_list를 이용하여 생성자를 만들면 우선 순위가 높으므로,

오버로딩된 다른 생성자보다 우선적으로 호출된다.

-> 다른 버전의 오버로딩 생성자를 이용할 수 없음.

 

'기초 C++ 스터디 > 모던 C++' 카테고리의 다른 글

10-6. override, final  (0) 2023.06.20
10-5. delete - 삭제된 함수  (0) 2023.06.20
10-4. enum class  (0) 2023.06.20
10-3. nullptr  (0) 2023.06.20
10-1. auto 문법  (0) 2023.06.20