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

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

KoreanFoodie's Study

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
Effective C++ | ํ•ญ๋ชฉ 12 : ๊ฐ์ฒด์˜ ๋ชจ๋“  ๋ถ€๋ถ„์„ ๋น ์ง์—†์ด ๋ณต์‚ฌํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:07
Effective C++ | ํ•ญ๋ชฉ 11 : operator= ์—์„œ๋Š” ์ž๊ธฐ๋Œ€์ž…์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋น ์ง€์ง€ ์•Š๋„๋ก ํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:07
Effective C++ | ํ•ญ๋ชฉ 10 : ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” *this ์˜ ์ฐธ์กฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 10 : ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” *this ์˜ ์ฐธ์กฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•˜์ž ํ•ต์‹ฌ : ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” *this ์˜ ์ฐธ์กฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋งŒ๋“ค์–ด๋ผ C++ ์˜ ๋Œ€์ž… ์—ฐ์‚ฐ์€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์‚ฌ์Šฌ์ฒ˜๋Ÿผ ์—ฎ์ผ ์ˆ˜ ์žˆ๋‹ค. int x, y, z; // ๋Œ€์ž…์€ ์šฐ์ธก ์—ฐ๊ด€(right-associative)์ด๋‹ค. x = y = z = 15; // ๋”ฐ๋ผ์„œ ์œ„ ์‹์€ ์‹ค์ œ๋กœ ์•„๋ž˜์™€ ๊ฐ™๋‹ค x = (y = (z = 15))); ๋Œ€์ž… ์—ฐ์‚ฐ์ด ์‚ฌ์Šฌ์ฒ˜๋Ÿผ ์—ฎ์ด๋ ค๋ฉด ๋Œ€์ž… ์—ฐ์‚ฐ์ž๊ฐ€ ์ขŒ๋ณ€ ์ธ์ž์— ๋Œ€ํ•œ ์ฐธ์กฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค(์ผ์ข…์˜ ๊ด€๋ก€[convention] ์ด๋‹ค). ์ด๋Š” += , -..

Tutorials/C++ : Advanced 2022. 10. 25. 16:06
Effective C++ | ํ•ญ๋ชฉ 9 : ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์†Œ๋ฉธ ๊ณผ์ • ์ค‘์—๋Š” ์ ˆ๋Œ€๋กœ ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ง์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 9 : ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์†Œ๋ฉธ ๊ณผ์ • ์ค‘์—๋Š” ์ ˆ๋Œ€๋กœ ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ง์ž ํ•ต์‹ฌ : ์ƒ์„ฑ์ž ๋ฐ ์†Œ๋ฉธ์ž ์•ˆ์—์„œ ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ง์ž! ๊ฐ€์ƒ ํ•จ์ˆ˜๋ผ๊ณ  ํ•ด๋„, ์ง€๊ธˆ ์‹คํ–‰ ์ค‘์ธ ์ƒ์„ฑ์ž๋‚˜ ์†Œ๋ฉธ์ž์— ํ•ด๋‹น๋˜๋Š” ํด๋ž˜์Šค์˜ ํŒŒ์ƒ ํด๋ž˜์Šค ์ชฝ์œผ๋กœ๋Š” ๋‚ด๋ ค๊ฐ€์ง€ ์•Š๋Š”๋‹ค! ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์†Œ๋ฉธ ๊ณผ์ • ์ค‘์—๋Š” ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ ˆ๋Œ€๋กœ ์•ˆ ๋œ๋‹ค! ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. // ๋ชจ๋“  ๊ฑฐ๋ž˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํด๋ž˜์Šค class Transaction { public: Transaction(); // ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๋กœ๊ทธ ๊ธฐ๋ก์„ ๋งŒ๋“ ๋‹ค virtual void logTransactio..

Tutorials/C++ : Advanced 2022. 10. 25. 16:05
Effective C++ | ํ•ญ๋ชฉ 8 : ์˜ˆ์™ธ๊ฐ€ ์†Œ๋ฉธ์ž๋ฅผ ๋– ๋‚˜์ง€ ๋ชปํ•˜๋„๋ก ๋ถ™๋“ค์–ด ๋†“์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:05
Effective C++ | ํ•ญ๋ชฉ 7 : ๋‹คํ˜•์„ฑ์„ ๊ฐ€์ง„ ๊ธฐ๋ณธ ํด๋ž˜์Šค์—์„œ๋Š” ์†Œ๋ฉธ์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ฐ€์ƒ ์†Œ๋ฉธ์ž๋กœ ์„ ์–ธํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:05
Effective C++ | ํ•ญ๋ชฉ 6 : ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ํ•จ์ˆ˜๊ฐ€ ํ•„์š” ์—†์œผ๋ฉด ํ™•์‹คํžˆ ์ด๋“ค์˜ ์‚ฌ์šฉ์„ ๊ธˆํ•ด ๋ฒ„๋ฆฌ์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:04
Effective C++ | ํ•ญ๋ชฉ 5 : C++ ๊ฐ€ ์€๊ทผ์Šฌ์ฉ ๋งŒ๋“ค์–ด ํ˜ธ์ถœํ•ด ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜๋“ค์— ์ด‰๊ฐ์„ ์„ธ์šฐ์ž

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

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