지정 초기화
Aggregate Initialization을 사용하기 위해 붙는 조건들을 맞춰줄 필요 없이 사용 가능 하다
[ Aggregate Initialization을 사용하기 위한 조건 ]
- 사용자 정의 생성자가 없어야 함
- 가상 함수가 없어야 함
- private, protected, static 데이터 변수는 사용 불가📢 그렇다고 사용할 때 조건이 없는 것은 아니다!
class Pos3D
{
public:
int iX;
int iY;
int iZ;
...
}
Pos3D pos{1, 2, 3};
특정 데이터 변수만 초기화를 해줄 수 없기 때문에, 만약 Pos3D의 데이터 변수들이 많다면 그 만큼 초기화 해줘야하는 번거로움이 생긴다.
- Pos3D pos{1, 2, 3, 4, 5, 6, 7, 8, ... 999}
축소 변환이 일어난다.
- Pos3D pos{1, 2, 3.f}
class Pos3D
{
public:
int iX;
int iY;
int iZ;
...
}
Pos3D pos{.x = 1, .y = 2, .z = 3};
특정 데이터 변수만 초기화를 해줄 수 있다!
- Pos3D pos{.x = 1, .z = 3};
축소 변환이 일어날 경우 컴파일러 에러가 발생해 실수를 방지할 수 있다!
- Pos3D pos{1, 2, 3.f}
하지만 데이터 변수 선언 순서에 맞게 초기화를 해줘야 한다!
- Pos3D pos{.z = 3, .x = 1} 불가능!