Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก2022/10 (117)

KoreanFoodie's Study

Effective Modern C++ | ํ•ญ๋ชฉ 35 : ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค ๊ณผ์ œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์„ ํ˜ธํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 35 : ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค ๊ณผ์ œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์„ ํ˜ธํ•˜๋ผ ํ•ต์‹ฌ : 1. std::thread API ์—์„œ๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋œ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ์ง์ ‘ ์–ป์„ ์ˆ˜ ์—†์œผ๋ฉฐ, ๋งŒ์ผ ๊ทธ๋Ÿฐ ํ•จ์ˆ˜๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค. 2. ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์Šค๋ ˆ๋“œ ๊ณ ๊ฐˆ, ๊ณผ๋‹ค๊ตฌ๋…, ๋ถ€ํ•˜ ๊ท ํ˜•ํ™”, ์ƒˆ ํ”Œ๋žซํผ์œผ๋กœ์˜ ์ ์‘์„ ๋…์ž๊ฐ€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. 3. std::async ์™€ ๊ธฐ๋ณธ ์‹œ๋™ ๋ฐฉ์นจ์„ ์ด์šฉํ•œ ๊ณผ์ œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ทธ๋Ÿฐ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋ฅผ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. doAsyncWork ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ํ•˜์ž. ๋ฐฉ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:06
Effective Modern C++ | ํ•ญ๋ชฉ 34 : std::bind ๋ณด๋‹ค ๋žŒ๋‹ค๋ฅผ ์„ ํ˜ธํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 34 : std::bind ๋ณด๋‹ค ๋žŒ๋‹ค๋ฅผ ์„ ํ˜ธํ•˜๋ผ ํ•ต์‹ฌ : 1. std::bind ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋žŒ๋‹ค๊ฐ€ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ํ‘œํ˜„๋ ฅ์ด ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ํšจ์œจ์ ์ด๋‹ค. 2. C++14 ๊ฐ€ ์•„๋‹Œ C++11 ์—์„œ๋Š” ์ด๋™ ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด๋ฅผ ํ…œํ”Œ๋ฆฟํ™”๋œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž์— ๋ฌถ์œผ๋ ค ํ•  ๋•Œ std::bind ๊ฐ€ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. C++11 ์—์„œ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ, C++14 ์—์„œ๋Š” ํ™•๊ณ ํ•˜๊ฒŒ ๋žŒ๋‹ค๊ฐ€ std::bind ์— ๋น„ํ•ด ์šฐ์›”ํ•œ ์„ ํƒ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. // ์‹œ๊ฐ„์ƒ์˜ ํ•œ ์ง€์ ์„ ๋Œ€ํ‘œํ•˜๋Š” ํ˜•์‹ ๋ณ„์นญ using Time = std::chro..

Tutorials/C++ : Advanced 2022. 10. 26. 10:05
Effective Modern C++ | ํ•ญ๋ชฉ 33 : std::forward ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•  auto&& ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” decltype ์„ ์‚ฌ์šฉํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 33 : std::forward ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•  auto&& ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” decltype ์„ ์‚ฌ์šฉํ•˜๋ผ ํ•ต์‹ฌ : 1. std::forward ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•  auto&& ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” decltype ์„ ์‚ฌ์šฉํ•˜๋ผ. C+14 ์—์„œ ๊ฐ€์žฅ ๊ณ ๋ฌด์ ์ธ ๊ธฐ๋Šฅ์€ ์ผ๋ฐ˜์  ๋žŒ๋‹ค(generic lambdas), ์ฆ‰ ๋งค๊ฐœ ๋ณ€์ˆ˜์— auto ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋žŒ๋‹ค์ด๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. auto f = [](auto x) { return normalized(x); }; ์œ„ ๋žŒ๋‹ค๊ฐ€ ์‚ฐ์ถœํ•˜๋Š” ํด๋กœ์ € ํด๋ž˜์Šค์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค. class ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€_๋งŒ๋“ ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:05
Effective Modern C++ | ํ•ญ๋ชฉ 32 : ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 32 : ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ํ•ต์‹ฌ : 1. ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•  ๋•Œ์—๋Š” C++14 ์˜ ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ. 2. C++11 ์—์„œ๋Š” ์ง์ ‘ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค๋‚˜ std::bind ๋กœ ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ํ‰๋‚ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋žŒ๋‹ค ์‚ฌ์šฉ์‹œ ๊ฐ’ ๊ฐˆ๋ฌด๋ฆฌ์™€ ์ฐธ์กฐ ๊ฐˆ๋ฌด๋ฆฌ๊ฐ€ ๋งˆ๋•…์น˜ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋™ ์ „์šฉ ๊ฐ์ฒด(std::unique_ptr, std::future ๋“ฑ)์ด ์ข‹์€ ์˜ˆ์ด๋‹ค. C++14 ์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ง์ ‘ ์ œ๊ณตํ•œ๋‹ค. C++11 ์—์„œ๋„ ์ด๋™ ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ํ‰๋‚ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ดˆ๊ธฐํ™”..

Tutorials/C++ : Advanced 2022. 10. 26. 10:05
Effective Modern C++ | ํ•ญ๋ชฉ 31 : ๊ธฐ๋ณธ ๊ฐˆ๋ฌด๋ฆฌ ๋ชจ๋“œ๋ฅผ ํ”ผํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 31 : ๊ธฐ๋ณธ ๊ฐˆ๋ฌด๋ฆฌ ๋ชจ๋“œ๋ฅผ ํ”ผํ•˜๋ผ ํ•ต์‹ฌ : 1. ๊ธฐ๋ณธ ์ฐธ์กฐ ๊ฐˆ๋ฌด๋ฆฌ๋Š” ์ฐธ์กฐ๊ฐ€ ๋Œ€์ƒ์„ ์žƒ์„ ์œ„ํ—˜์ด ์žˆ๋‹ค. 2. ๊ธฐ๋ณธ ๊ฐ’ ๊ฐˆ๋ฌด๋ฆฌ๋Š” ํฌ์ธํ„ฐ(ํŠนํžˆ this)๊ฐ€ ๋Œ€์ƒ์„ ์žƒ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋žŒ๋‹ค๊ฐ€ ์ž๊ธฐ ์™„๊ฒฐ์ ์ด๋ผ๋Š” ์˜คํ•ด๋ฅผ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ํ•ญ๋ชฉ์„ ๋“ค์–ด๊ฐ€๊ธฐ ์ „, ์ž์ฃผ ๋‚˜์˜ค๋Š” ์šฉ์–ด๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์‹(lambda expression) : ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํ•˜๋‚˜์˜ ํ‘œํ˜„์‹์œผ๋กœ, ์†Œ์Šค ์ฝ”๋“œ์—์„œ "[ ]( ){ }" ๋กœ ํ‘œํ˜„๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. ํด๋กœ์ €(closure) : ๋žŒ๋‹ค์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์‹คํ–‰ ์‹œ์  ๊ฐ์ฒด. ๊ฐˆ๋ฌด๋ฆฌ ๋ชจ๋“œ(capture mode)์—..

Tutorials/C++ : Advanced 2022. 10. 26. 10:04
Effective Modern C++ | ํ•ญ๋ชฉ 30 : ์™„๋ฒฝ ์ „๋‹ฌ์ด ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๋“ค์„ ์ž˜ ์•Œ์•„๋‘๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 30 : ์™„๋ฒฝ ์ „๋‹ฌ์ด ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๋“ค์„ ์ž˜ ์•Œ์•„๋‘๋ผ ํ•ต์‹ฌ : 1. ์™„๋ฒฝ ์ „๋‹ฌ์€ ํ…œํ”Œ๋ฆฟ ํ˜•์‹ ์—ฐ์—ญ์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ํ‹€๋ฆฐ ํ˜•์‹์„ ์—ฐ์—ญํ–ˆ์„ ๋•Œ ์‹คํŒจํ•œ๋‹ค. 2. ์ธ์ˆ˜๊ฐ€ ์ค‘๊ด„ํ˜ธ ์ดˆ๊ธฐ์น˜์ด๊ฑฐ๋‚˜ 0 ๋˜๋Š” NULL ๋กœ ํ‘œํ˜„๋œ ๋„ ํฌ์ธํ„ฐ, ์„ ์–ธ๋งŒ ๋œ ์ •์ˆ˜ static const ๋ฐ constexpr ์ž๋ฃŒ ๋ฉค๋ฒ„, ํ…œํ”Œ๋ฆฟ ๋ฐ ์ค‘๋ณต์ ์žฌ๋œ ํ•จ์ˆ˜ ์ด๋ฆ„, ๋น„ํŠธํ•„๋“œ์ด๋ฉด ์™„๋ฒฝ ์ „๋‹ฌ์ด ์‹คํŒจํ•œ๋‹ค. ์™„๋ฒฝ ์ „๋‹ฌ์€ ๋‹จ์ˆœํžˆ ๊ฐ์ฒด๋“ค์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๋งŒ์ด ์•„๋‹ˆ๋ผ, ๊ทธ ๊ฐ์ฒด๋“ค์˜ ์ฃผ์š” ํŠน์ง•, ์ฆ‰ ํ˜•์‹, ์™ผ๊ฐ’/์˜ค๋ฅธ๊ฐ’ ์—ฌ๋ถ€, const ๋‚˜ volatile ์—ฌ๋ถ€๊นŒ์ง€๋„ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์ž...

Tutorials/C++ : Advanced 2022. 10. 26. 10:04
Effective Modern C++ | ํ•ญ๋ชฉ 29 : ์ด๋™ ์—ฐ์‚ฐ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ์ €๋ ดํ•˜์ง€ ์•Š๊ณ , ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 29 : ์ด๋™ ์—ฐ์‚ฐ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ์ €๋ ดํ•˜์ง€ ์•Š๊ณ , ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ผ ํ•ต์‹ฌ : 1. ์ด๋™ ์—ฐ์‚ฐ๋“ค์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ์ €๋ ดํ•˜์ง€ ์•Š๊ณ , ์ ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž. 2. ํ˜•์‹๋“ค๊ณผ ์ด๋™ ์˜๋ฏธ๋ก  ์ง€์› ์—ฌ๋ถ€๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋Ÿฐ ๊ฐ€์ •์„ ๋‘˜ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์•„๋งˆ C++11 ์—์„œ ๊ฐ€์žฅ ์ฃผ๋œ ๊ฐ€๋Šฅ์€ ์ด๋™ ์˜๋ฏธ๋ก (move semantics) ์ผ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ด๋™ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ๋˜ ๋ณต์‚ฌ๋ณด๋‹ค ์ €๋ ดํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, std::vector ์˜ ๊ฒฝ์šฐ std::move ์—ฐ์‚ฐ์€, ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ์š”..

Tutorials/C++ : Advanced 2022. 10. 26. 10:03
Effective Modern C++ | ํ•ญ๋ชฉ 28 : ์ฐธ์กฐ ์ถ•์•ฝ์„ ์ˆ™์ง€ํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 28 : ์ฐธ์กฐ ์ถ•์•ฝ์„ ์ˆ™์ง€ํ•˜๋ผ ํ•ต์‹ฌ : 1. ์ฐธ์กฐ ์ถ•์•ฝ์€ ํ…œํ”Œ๋ฆฟ ์ธ์Šคํ„ด์Šคํ™”, auto ํ˜•์‹ ์—ฐ์—ญ, typedef ๊ณผ ๋ณ„์นญ ์„ ์–ธ์˜ ์ง€์ • ๋ฐ ์‚ฌ์šฉ, decltype ์˜ ์ง€์ • ๋ฐ ์‚ฌ์šฉ์ด๋ผ๋Š” ๋„ค ๊ฐ€์ง€ ๋ฌธ๋งฅ์—์„œ ์ผ์–ด๋‚œ๋‹ค. 2. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฐธ์กฐ ์ถ•์•ฝ ๋ฌธ๋งฅ์—์„œ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋Š” ํ•˜๋‚˜์˜ ์ฐธ์กฐ๊ฐ€ ๋œ๋‹ค. ์›๋ž˜์˜ ๋‘ ์ฐธ์กฐ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์™ผ๊ฐ’ ์ฐธ์กฐ์ด๋ฉด ๊ฒฐ๊ณผ๋Š” ์™ผ๊ฐ’ ์ฐธ์กฐ์ด๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅธ๊ฐ’ ์ฐธ์กฐ์ด๋‹ค. 3. ํ˜•์‹ ์—ฐ์—ญ์ด ์™ผ๊ฐ’๊ณผ ์˜ค๋ฅธ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฌธ๋งฅ๊ณผ ์ฐธ์กฐ ์ถ•์•ฝ์ด ์ผ์–ด๋‚˜๋Š” ๋ฌธ๋งฅ์—์„œ ๋ณดํŽธ ์ฐธ์กฐ๋Š” ์˜ค๋ฅธ๊ฐ’ ์ฐธ์กฐ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” T&& ๊ฐ™์€..

Tutorials/C++ : Advanced 2022. 10. 26. 10:03
Effective Modern C++ | ํ•ญ๋ชฉ 27 : ๋ณดํŽธ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์ค‘๋ณต์ ์žฌ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•๋“ค์„ ์•Œ์•„ ๋‘๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 27 : ๋ณดํŽธ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์ค‘๋ณต์ ์žฌ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•๋“ค์„ ์•Œ์•„ ๋‘๋ผ ํ•ต์‹ฌ : 1. ๋ณดํŽธ ์ฐธ์กฐ์™€ ์ค‘๋ณต์ ์žฌ์˜ ์กฐํ•ฉ์— ๋Œ€ํ•œ ๋Œ€์•ˆ์œผ๋กœ๋Š” ๊ตฌ๋ณ„๋˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„ ์‚ฌ์šฉ, ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ const ์— ๋Œ€ํ•œ ์™ผ๊ฐ’ ์ฐธ์กฐ๋กœ ์ „๋‹ฌ, ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ, ๊ผฌ๋ฆฌํ‘œ ๋ฐฐ๋ถ„ ์‚ฌ์šฉ ๋“ฑ์ด ์žˆ๋‹ค. 2. std::enable_if ๋ฅผ ์ด์šฉํ•ด์„œ ํ…œํ”Œ๋ฆฟ์˜ ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ์ œํ•œํ•จ์œผ๋กœ์จ ๋ณดํŽธ ์ฐธ์กฐ์™€ ์ค‘๋ณต์ ์žฌ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. std::enable_if ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณดํŽธ ์ฐธ์กฐ ์ค‘๋ณต์ ์žฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์กฐ๊ฑด์„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ œ์–ดํ•˜๋Š” ์šฉ๋„๋กœ ์“ฐ์ธ๋‹ค. 3. ๋ณดํŽธ ์ฐธ์กฐ ๋งค๊ฐœ๋ณ€์ˆ˜..

Tutorials/C++ : Advanced 2022. 10. 26. 10:00
Effective Modern C++ | ํ•ญ๋ชฉ 26 : ๋ณดํŽธ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์ค‘๋ณต์ ์žฌ๋ฅผ ํ”ผํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 26 : ๋ณดํŽธ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์ค‘๋ณต์ ์žฌ๋ฅผ ํ”ผํ•˜๋ผ ํ•ต์‹ฌ : 1. ๋ณดํŽธ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์ค‘๋ณต์ ์žฌ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ๋ณดํŽธ ์ฐธ์กฐ ์ค‘๋ณต์ ์žฌ ๋ฒ„์ „์ด ์˜ˆ์ƒ๋ณด๋‹ค ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ์ƒํ™ฉ์œผ๋กœ ์ด์–ด์ง„๋‹ค. 2. ์™„๋ฒฝ ์ „๋‹ฌ ์ƒ์„ฑ์ž๋“ค์€ ํŠนํžˆ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿฐ ์ƒ์„ฑ์ž๋Š” ๋Œ€์ฒด๋กœ ๋น„const ์™ผ๊ฐ’์— ๋Œ€ํ•œ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋ณด๋‹ค ๋” ๋‚˜์€ ๋ถ€ํ•ฉ์ด๋ฉฐ, ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค ๋ณต์‚ฌ ๋ฐ ์ด๋™ ์ƒ์„ฑ์ž๋“ค์— ๋Œ€ํ•œ ํŒŒ์ƒ ํด๋ž˜์Šค๋“ค์˜ ํ˜ธ์ถœ๋“ค์„ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. std::multiset names; void logAndAdd(const std::string& name) ..

Tutorials/C++ : Advanced 2022. 10. 26. 09:59