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 |
๋๊ธ