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

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

KoreanFoodie's Study

Effective C++ | ํ•ญ๋ชฉ 22 : ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๊ฐ€ ์„ ์–ธ๋  ๊ณณ์€ private ์˜์—ญ์ž„์„ ๋ช…์‹ฌํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:13
Effective C++ | ํ•ญ๋ชฉ 21 : ํ•จ์ˆ˜์—์„œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์— ์ฐธ์กฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ ค๊ณ  ๋“ค์ง€ ๋ง์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:13
Effective C++ | ํ•ญ๋ชฉ 20 : '๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ' ๋ณด๋‹ค๋Š” '์ƒ์ˆ˜๊ฐ์ฒด ์ฐธ์กฐ์ž์— ์˜ํ•œ ์ „๋‹ฌ' ๋ฐฉ์‹์„ ํƒํ•˜๋Š” ํŽธ์ด ๋Œ€๊ฐœ ๋‚ซ๋‹ค

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 20 : '๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ' ๋ณด๋‹ค๋Š” '์ƒ์ˆ˜๊ฐ์ฒด ์ฐธ์กฐ์ž์— ์˜ํ•œ ์ „๋‹ฌ' ๋ฐฉ์‹์„ ํƒํ•˜๋Š” ํŽธ์ด ๋Œ€๊ฐœ ๋‚ซ๋‹ค ํ•ต์‹ฌ : 1. '๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ' ๋ณด๋‹ค๋Š” '์ƒ์ˆ˜ ๊ฐ์ฒด ์ฐธ์กฐ์ž์— ์˜ํ•œ ์ „๋‹ฌ' ์„ ์„ ํ˜ธํ•˜์ž. ๋Œ€์ฒด์ ์œผ๋กœ ํšจ์œจ์ ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณต์‚ฌ์†์‹ค ๋ฌธ์ œ๊นŒ์ง€ ๋ง‰์•„์ค€๋‹ค. 2. ์ด๋ฒˆ ํ•ญ๋ชฉ์—์„œ ๋‹ค๋ฃฌ ๋ฒ•์น™์€ ๊ธฐ๋ณธ์ œ๊ณต ํƒ€์ž… ๋ฐ STL ๋ฐ˜๋ณต์ž, ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜ ๊ฐ์ฒด ํƒ€์ž…์—๋Š” ๋งž์ง€ ์•Š๋Š”๋‹ค. ์ด๋“ค์— ๋Œ€ํ•ด์„œ๋Š” '๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ' ์ด ๋” ์ ์ ˆํ•˜๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ C++ ๋Š” ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›๊ฑฐ๋‚˜ ์ „๋‹ฌํ•  ๋•Œ '๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ(pass-by-value)' ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:12
Effective C++ | ํ•ญ๋ชฉ 19 : ํด๋ž˜์Šค ์„ค๊ณ„๋Š” ํƒ€์ž… ์„ค๊ณ„์™€ ๋˜‘๊ฐ™์ด ์ทจ๊ธ‰ํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 19 : ํด๋ž˜์Šค ์„ค๊ณ„๋Š” ํƒ€์ž… ์„ค๊ณ„์™€ ๋˜‘๊ฐ™์ด ์ทจ๊ธ‰ํ•˜์ž ํ•ต์‹ฌ : ํด๋ž˜์Šค ์„ค๊ณ„๋Š” ํƒ€์ž… ์„ค๊ณ„์ด๋‹ค. ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ •์˜ํ•˜๊ธฐ ์ „์—, ์ด๋ฒˆ ํ•ญ๋ชฉ์— ๋‚˜์˜จ ๋ชจ๋“  ๊ณ ๋ ค์‚ฌํ•ญ์„ ๋น ์ง์—†์ด ์ ๊ฒ€ํ•ด ๋ณด์ž! C++ ์—์„œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ํ•˜๋‚˜ ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค์„ ์ˆ™๊ณ ํ•œ ํ›„ ๋งŒ๋“ค์–ด ๋ณด์ž! ์ƒˆ๋กœ ์ •์˜ํ•œ ํƒ€์ž…์˜ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์†Œ๋ฉธ์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š”๊ฐ€? (operator new, operator delete[] ๋“ฑ๋“ฑ) ๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋Š” ๊ฐ์ฒด ๋Œ€์ž…๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์•ผ ํ•˜๋Š”๊ฐ€? ์ƒˆ๋กœ์šด ํƒ€์ž…์œผ๋กœ ๋งŒ๋“  ๊ฐ์ฒด๊ฐ€ ๊ฐ’์— ์˜ํ•ด..

Tutorials/C++ : Advanced 2022. 10. 25. 16:12
Effective C++ | ํ•ญ๋ชฉ 18 : ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„๋Š” ์ œ๋Œ€๋กœ ์“ฐ๊ธฐ์—” ์‰ฝ๊ฒŒ, ์—‰ํ„ฐ๋ฆฌ๋กœ ์“ฐ๊ธฐ์—” ์–ด๋ ต๊ฒŒ ํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:12
Effective C++ | ํ•ญ๋ชฉ 17 : new ๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์— ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋ณ„๋„์˜ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋งŒ๋“ค์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 17 : new ๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์— ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋ณ„๋„์˜ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋งŒ๋“ค์ž ํ•ต์‹ฌ : new ๋กœ ์ƒ์ƒํ•œ ๊ฐ์ฒด๋ฅผ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋กœ ๋„ฃ๋Š” ์ฝ”๋“œ๋Š” ๋ณ„๋„์˜ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋งŒ๋“ค์ž. ์ด๊ฒƒ์ด ์•ˆ ๋˜์–ด ์žˆ์œผ๋ฉด, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ๋  ๋•Œ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ํž˜๋“  ์ž์› ๋ˆ„์ถœ์ด ์ดˆ๋ž˜๋  ์ˆ˜ ์žˆ๋‹ค! ์ฒ˜๋ฆฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์žˆ๊ณ , ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ Widget ๊ฐ์ฒด์— ๋Œ€ํ•ด ์–ด๋–ค ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ๋ฅผ ์ ์šฉํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. int priority(); void processWidget(std::shared_ptr pw, int prio..

Tutorials/C++ : Advanced 2022. 10. 25. 16:11
Effective C++ | ํ•ญ๋ชฉ 16 : new ๋ฐ delete ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ˜•ํƒœ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋งž์ถ”์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 16 : new ๋ฐ delete ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ˜•ํƒœ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋งž์ถ”์ž ํ•ต์‹ฌ : new ํ‘œํ˜„์‹์— [ ] ๋ฅผ ์ผ์œผ๋ฉด, ๋Œ€์‘๋˜๋Š” delete ํ‘œํ˜„์‹์—๋„ [ ] ๋ฅผ ์จ์•ผ ํ•œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, new ํ‘œํ˜„์‹์— [ ] ๋ฅผ ์•ˆ ์ผ์œผ๋ฉด, ๋Œ€์‘๋˜๋Š” delete ํ‘œํ˜„์‹์—๋„ [ ] ๋ฅผ ์“ฐ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์–ด๋–ค ๋ถ€๋ถ„์ด ์ž˜๋ชป๋˜์—ˆ์„๊นŒ? std::string *stringArray = new std::string[100]; ... delete stringArray; stringArray ๋Š” ๋ฐฐ์—ด์ด๋ฏ€๋กœ, delete[] ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐฐ์—ด์˜ ๊ฐ์ฒด ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:10
Effective C++ | ํ•ญ๋ชฉ 15 : ์ž์› ๊ด€๋ฆฌ ํด๋ž˜์Šค์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ์ž์›์€ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:10
Effective C++ | ํ•ญ๋ชฉ 14 : ์ž์› ๊ด€๋ฆฌ ํด๋ž˜์Šค์˜ ๋ณต์‚ฌ ๋™์ž‘์— ๋Œ€ํ•ด ์ง„์ง€ํ•˜๊ฒŒ ๊ณ ์ฐฐํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:09
Effective C++ | ํ•ญ๋ชฉ 13 : ์ž์› ๊ด€๋ฆฌ์—๋Š” ๊ฐ์ฒด๊ฐ€ ๊ทธ๋งŒ!

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 13 : ์ž์› ๊ด€๋ฆฌ์—๋Š” ๊ฐ์ฒด๊ฐ€ ๊ทธ๋งŒ! ํ•ต์‹ฌ : 1. ์ž์› ๋ˆ„์ถœ์„ ๋ง‰๊ธฐ ์œ„ํ•ด, ์ƒ์„ฑ์ž ์•ˆ์—์„œ ์ž์›์„ ํš๋“ํ•˜๊ณ  ์†Œ๋ฉธ์ž์—์„œ ๊ทธ๊ฒƒ์„ ํ•ด์ œํ•˜๋Š” RAII ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ž 2. ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฆฌ ์“ฐ์ด๋Š” RAII ํด๋ž˜์Šค๋Š” shared_ptr ๊ทธ๋ฆฌ๊ณ  auto_ptr ์ด๋‹ค. ์ด ๋‘˜ ๊ฐ€์šด๋ฐ shared_ptr ์ด ๋ณต์‚ฌ ์‹œ์˜ ๋™์ž‘์ด ์ง๊ด€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ฐœ ๋” ์ข‹๋‹ค. ๋ฐ˜๋ฉด, auto_ptr ์€ ๋ณต์‚ฌ๋˜๋Š” ๊ฐ์ฒด(์›๋ณธ ๊ฐ์ฒด) ๋ฅผ null ๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฐ๋‹ค. -> auto_ptr ์€ C++ 11 ์ดํ›„๋กœ ์“ธ ์ˆ˜ ์—†๊ฒŒ ๋จ! ๋Œ€์‹  unique_ptr ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ์Šค๋งˆํŠธ ํฌ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:09