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

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

KoreanFoodie's Study

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
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