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

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

KoreanFoodie's Study

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
Effective Modern C++ | ํ•ญ๋ชฉ 20 : std::shared_ptr ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋˜ ๋Œ€์ƒ์„ ์žƒ์„ ์ˆ˜๋„ ์žˆ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉด std::weak_ptr ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

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

Tutorials/C++ : Advanced 2022. 10. 26. 09:56
Effective Modern C++ | ํ•ญ๋ชฉ 19 : ์†Œ์œ ๊ถŒ ๊ณต์œ  ์ž์›์˜ ๊ด€๋ฆฌ์—๋Š” std::shared_ptr ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

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

Tutorials/C++ : Advanced 2022. 10. 26. 09:56
Effective Modern C++ | ํ•ญ๋ชฉ 18 : ์†Œ์œ ๊ถŒ ๋…์  ์ž์›์˜ ๊ด€๋ฆฌ์—๋Š” std::unique_ptr ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 18 : ์†Œ์œ ๊ถŒ ๋…์  ์ž์›์˜ ๊ด€๋ฆฌ์—๋Š” std::unique_ptr ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ํ•ต์‹ฌ : 1. std::unique_ptr ๋Š” ๋…์  ์†Œ์œ ๊ถŒ ์˜๋ฏธ๋ก ์„ ๊ฐ€์ง„ ์ž์›์˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ, ์ž‘๊ณ  ๋น ๋ฅธ ์ด๋™ ์ „์šฉ ๋˜‘๋˜‘ํ•œ ํฌ์ธํ„ฐ์ด๋‹ค. 2. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์› ํŒŒ๊ดด๋Š” delete ๋ฅผ ํ†ตํ•ด ์ผ์–ด๋‚˜๋‚˜, ์ปค์Šคํ…€ ์‚ญ์ œ์ž๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒํƒœ ์žˆ๋Š” ์‚ญ์ œ์ž๋‚˜ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด std::unique_ptr ๊ฐ์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค. 3. std::unique_ptr ๋ฅผ std::shared_ptr ๋กœ ์†์‰ฝ๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. C++ ์—์„œ ์ƒ ํฌ์ธํ„ฐ(raw pointe..

Tutorials/C++ : Advanced 2022. 10. 26. 09:56
Effective Modern C++ | ํ•ญ๋ชฉ 17 : ํŠน์ˆ˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋“ค์˜ ์ž๋™ ์ž‘์„ฑ ์กฐ๊ฑด์„ ์ˆ™์ง€ํ•˜๋ผ

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

Tutorials/C++ : Advanced 2022. 10. 26. 09:55
Effective Modern C++ | ํ•ญ๋ชฉ 16 : const ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 16 : const ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ผ ํ•ต์‹ฌ : 1. ๋™์‹œ์  ๋ฌธ๋งฅ์—์„œ ์“ฐ์ด์ง€ ์•Š์„ ๊ฒƒ์ด ํ™•์‹คํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, const ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ผ. 2. std::atomic ๋ณ€์ˆ˜๋Š” mutex ์— ๋น„ํ•ด ์„ฑ๋Šฅ์ƒ์˜ ์ด์ ์ด ์žˆ์ง€๋งŒ, ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์žฅ์†Œ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์—๋งŒ ์ ํ•ฉํ•˜๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹คํ•ญ์‹ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. class Polynomial { public: using RootsType = std::vector; RootsType roots() const { // ์บ์‹œ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด ..

Tutorials/C++ : Advanced 2022. 10. 26. 09:54
Effective Modern C++ | ํ•ญ๋ชฉ 15 : ๊ฐ€๋Šฅํ•˜๋ฉด ํ•ญ์ƒ constexpr ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

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

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