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

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1103)

KoreanFoodie's Study

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
Effective Modern C++ | ํ•ญ๋ชฉ 25 : ์˜ค๋ฅธ๊ฐ’ ์ฐธ์กฐ์—๋Š” std::move ๋ฅผ, ๋ณดํŽธ ์ฐธ์กฐ์—๋Š” std::forward ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

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

Tutorials/C++ : Advanced 2022. 10. 26. 09:59
Effective Modern C++ | ํ•ญ๋ชฉ 24 : ๋ณดํŽธ ์ฐธ์กฐ์™€ ์˜ค๋ฅธ๊ฐ’ ์ฐธ์กฐ๋ฅผ ๊ตฌ๋ณ„ํ•˜๋ผ

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

Tutorials/C++ : Advanced 2022. 10. 26. 09:58
Effective Modern C++ | ํ•ญ๋ชฉ 23 : std::move ์™€ std::forward ๋ฅผ ์ˆ™์ง€ํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 23 : std::move ์™€ std::forward ๋ฅผ ์ˆ™์ง€ํ•˜๋ผ ํ•ต์‹ฌ : 1. std::move ๋Š” ์˜ค๋ฅธ๊ฐ’์œผ๋กœ์˜ ๋ฌด์กฐ๊ฑด ์บ์ŠคํŒ…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. std::move ์ž์ฒด๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ด๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. 2. std::forward ๋Š” ์ฃผ์–ด์ง„ ์ธ์ˆ˜๊ฐ€ ์˜ค๋ฅธ๊ฐ’์— ๋ฌถ์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ทธ๊ฒƒ์„ ์˜ค๋ฅธ๊ฐ’์œผ๋กœ ์บ์ŠคํŒ…ํ•œ๋‹ค. 3. std::move ์™€ std::forward ๋‘˜ ๋‹ค, ์‹คํ–‰ ์‹œ์ ์—์„œ๋Š” ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. std::move ์™€ std::forward ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅ ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฐ”์ดํŠธ๋„ ์‚ฐ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๋ƒฅ ์บ์ŠคํŒ…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜(๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ํ•จ..

Tutorials/C++ : Advanced 2022. 10. 26. 09:58
Effective Modern C++ | ํ•ญ๋ชฉ 22 : Pimpl ๊ด€์šฉ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ํŠน์ˆ˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋“ค์„ ๊ตฌํ˜„ ํŒŒ์ผ์—์„œ ์ •์˜ํ•˜๋ผ

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

Tutorials/C++ : Advanced 2022. 10. 26. 09:57
Effective Modern C++ | ํ•ญ๋ชฉ 21 : new ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค std::make_unique ์™€ std::make_shared ๋ฅผ ์„ ํ˜ธํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 21 : new ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค std::make_unique ์™€ std::make_shared ๋ฅผ ์„ ํ˜ธํ•˜๋ผ ํ•ต์‹ฌ : 1. new ์˜ ์ง์ ‘ ์‚ฌ์šฉ์— ๋น„ํ•ด, make ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์Šค ์ฝ”๋“œ ์ค‘๋ณต์˜ ์—ฌ์ง€๊ฐ€ ์—†์–ด์ง€๊ณ , ์˜ˆ์™ธ ์•ˆ์ „์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ , std::make_shared ์™€ std::allocate_shared ์˜ ๊ฒฝ์šฐ ๋” ์ž‘๊ณ  ๋น ๋ฅธ ์ฝ”๋“œ๊ฐ€ ์‚ฐ์ถœ๋œ๋‹ค. 2. make ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ ๋˜๋Š” ๋ถ€์ ํ•ฉํ•œ ๊ฒฝ์šฐ๋กœ๋Š” ์ปค์Šคํ…€ ์‚ญ์ œ์ž๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์ค‘๊ด„ํ˜ธ ์ดˆ๊ธฐ์น˜๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. 3. std::shared_ptr ์— ..

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