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++
'νλ‘κ·Έλλ° μΈμ΄ > C++ μμ©' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
std::threadμ std::async (0) | 2023.01.14 |
---|---|
[std] iteratorλ³΄λ¨ const_iterator ! (0) | 2023.01.14 |
[C++]ν¬μΈν°μ λ νΌλ°μ€ μ°¨μ΄ (0) | 2023.01.09 |
μ±λ₯ μ΅μ νλ₯Ό μν κΏν! (0) | 2022.12.30 |
[C/C++] unsignedμ signedμ κ° λΉκ΅ μ£Όμ (0) | 2022.03.23 |
λκΈ