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 |