νλ‘κ·Έλλ° μΈμ΄/C++ μμ©
κ°μ²΄ μμ±μ μκ΄νΈμ μ€κ΄νΈ μ°¨μ΄
μμλπ
2023. 1. 14. 22:54
C++ 11μ κ· μΌ μ΄κΈ°ν(uniform initialization)λ₯Ό λμ νμ΅λλ€. κ· μΌ μ΄κΈ°ν ꡬ문μ μ€κ΄νΈλ₯Ό μ¬μ©νλ©°, μ΄μ μλ ννν μ μμλ λ°©μμ κ°μ²΄ μμ±μ ννν μ μμ΅λλ€.
class Foo {
...
private:
int x{0}; // OK
int y = 0; // OK
int z(0); // Error!
};
λ°λ©΄ 볡μ¬ν μ μλ κ°μ²΄(μλ₯Ό λ€λ©΄ std::atomic)μ μ€κ΄νΈλ μκ΄νΈλ‘λ μ΄κΈ°νν μ μμ§λ§ =λ‘λ μ΄κΈ°ν ν μ μμ΅λλ€.
std::atomic<int> val1{0}; //OK
std::atomic<int> val2(0); //OK
std::atomic<int> val3 = 0; //Error!
λ, μ€κ΄νΈ μ΄κΈ°νμ νμ μ μΈ κΈ°λ₯μ λ°λ₯΄μ§ μμ μ묡μ νλ³νμ λ°©μ§νλ€λ κ²μ λλ€.
double d1, d2, d3;
...
int sum1{d1+d2+d3}; // Error!
int sum2(d1+d2+d3); // OK
int sum3 = d1+d2+d3; // OK
λν μκ΄νΈ μ΄κΈ°νμ λ°©μμ μμ±μ νΈμΆκ³Ό ν¨μ νΈμΆμ ν·κ°λ¦¬κ² λ§λ€μ§λ§ μ€κ΄νΈ μ΄κΈ°ν λ°©μμ μ΄ λΆλΆμμ μμ λ‘μ΅λλ€.
Foo f1(10) // μΈμ 10dμΌλ‘ Fooμ μμ±μ νΈμΆ
Foo f2() // Fooλ₯Ό λ°ννλ f2μ ν¨μ μ μΈ..!
Foo f3{} // μΈμ μλ Fooμ μμ±μ νΈμΆ(Foo f3)κ³Ό κ°λ€
μΆμ²: Effective Modern C++