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

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

KoreanFoodie's Study

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