https://www.learncpp.com/cpp-tutorial/default-member-initialization/
stuct type 선언에서 member variable을 default init할 수 있따
struct Something
{
int x; // no initialization value (bad)
int y {}; // value-initialized by default
int z { 2 }; // explicit default value
};
int main()
{
Something s1; // s1.x is uninitialized, s1.y is 0, and s1.z is 2
return 0;
}
x는 init이 없다, 좋지 않은 습관이다
y의 경우 0으로 (int default) init 했다
z의 겨우 2로 explicit default init 했다
그리고 instantiate할 때 list에 집어 넣는 value들은
member order가 빠른 순서로 들어간다는 것을 명심하자
struct Fraction
{
int numerator { }; // we should use { 0 } here, but for the sake of example we'll use value initialization instead
int denominator { 1 };
};
int main()
{
Fraction f1; // f1.numerator value initialized to 0, f1.denominator defaulted to 1
Fraction f2 {}; // f2.numerator value initialized to 0, f2.denominator defaulted to 1
Fraction f3 { 6 }; // f3.numerator initialized to 6, f3.denominator defaulted to 1
Fraction f4 { 5, 8 }; // f4.numerator initialized to 5, f4.denominator initialized to 8
return 0;
}
위에서 f1과 f2 중 어느 init이 더 prefer 될까?
아무래도 f2가 더 안전하다고 볼 수 있다
f2의 경우 default init이 설정되어 있지 않은 경우 0으로 init 해준다
반면 f1은 의도치 않은 동작이 발생할 수 있다