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

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

KoreanFoodie's Study

๊ฒŒ์ž„์ˆ˜ํ•™ - ํ–‰๋ ฌ์„ ์ด์šฉํ•œ ํšŒ์ „๋ณ€ํ™˜

์ด๋“์šฐ๋‹˜์˜ '์ด๋“์šฐ์˜ ๊ฒŒ์ž„์ˆ˜ํ•™' ์ฑ…์„ ๋ณด๋ฉฐ ์ข‹์€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด, ์ฑ…์„ ๊ตฌ๋งคํ•ด ์ง์ ‘ ์ฝ์–ด๋ณด์‹œ๊ธฐ๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ–‰๋ ฌ์„ ์ด์šฉํ•œ ํšŒ์ „๋ณ€ํ™˜ ํ–‰๋ ฌ์„ ์ด์šฉํ•ด ์–ด๋–ค ๋ฌผ์ฒด๋ฅผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 90 ๋„ ํšŒ์ „์‹œํ‚ค๋Š” ํ–‰๋ ฌ์„ ๊ตฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด, ๋‘ ๋ฒกํ„ฐ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ™˜๋œ๋‹ค. ํ‘œ์ค€๊ธฐ์ €๋ฒกํ„ฐ e1 : (1, 0) -> (0, 1) ํ‘œ์ค€๊ธฐ์ €๋ฒกํ„ฐ e2 : (0, 1) -> (-1, 0) ๋”ฐ๋ผ์„œ ๋ฐ˜์‹œ๊ณ„๋กœ 90 ๋„ ํšŒ์ „ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ–‰๋ ฌ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ 90 ๋„ ํšŒ์ „์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค : ์‚ฌ์‹ค 90 ๋„ ํšŒ์ „์˜ ๊ฒฝ์šฐ๋Š” ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. - ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 90 ๋„ ํšŒ์ „ : (x, y) ..

Game Dev/Game Math 2022. 10. 26. 07:03
Effective C++ | ํ•ญ๋ชฉ 55 : Booๅญๆœ‰่ฆช! ๋ถ€์ŠคํŠธ๋ฅผ ๋Š˜ ์—ฌ๋Ÿฌ๋ถ„ ๊ฐ€๊นŒ์ด์—

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

Tutorials/C++ : Advanced 2022. 10. 26. 06:32
Effective C++ | ํ•ญ๋ชฉ 54 : TR1 ์„ ํฌํ•จํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์„ฑ์š”์†Œ์™€ ํŽธ์•ˆํ•œ ์นœ๊ตฌ๊ฐ€ ๋˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 26. 06:31
Effective C++ | ํ•ญ๋ชฉ 53 : ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ์ง€๋‚˜์น˜์ง€ ๋ง์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 53 : ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ์ง€๋‚˜์น˜์ง€ ๋ง์ž ํ•ต์‹ฌ : 1. ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ์‰ฝ๊ฒŒ ์ง€๋‚˜์น˜์ง€ ๋ง์ž. ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ด์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์งœ์ž. 2. ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ์— ๋„ˆ๋ฌด ๊ธฐ๋Œ€์ง€๋Š” ๋ง์ž! ์ปดํŒŒ์ผ๋Ÿฌ๋งˆ๋‹ค ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋Š” ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค! ๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. class B { public: virtual void f() const; }; class D: public B { public: // f ๋Š” ์žฌ์„ ์–ธ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์•„์˜ˆ ๊ฐ€๋ฆฌ๊ณ  ์žˆ์Œ virtual void f(); }; ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์œ„ ๊ฒฝ์šฐ, "warning: D::f() hides virtual B:..

Tutorials/C++ : Advanced 2022. 10. 26. 06:31
Effective C++ | ํ•ญ๋ชฉ 52 : ์œ„์น˜์ง€์ • new ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ์œ„์น˜์ง€์ • delete ๋„ ๊ฐ™์ด ์ค€๋น„ํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 26. 06:31
Effective C++ | ํ•ญ๋ชฉ 51 : new ๋ฐ delete ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋”ฐ๋ผ์•ผ ํ•  ๊ธฐ์กด์˜ ๊ด€๋ก€๋ฅผ ์ž˜ ์•Œ์•„ ๋‘์ž

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

Tutorials/C++ : Advanced 2022. 10. 26. 06:29
๊ฒŒ์ž„์ˆ˜ํ•™ - ๊ทน์ขŒํ‘œ๊ณ„

์ด๋“์šฐ๋‹˜์˜ '์ด๋“์šฐ์˜ ๊ฒŒ์ž„์ˆ˜ํ•™' ์ฑ…์„ ๋ณด๋ฉฐ ์ข‹์€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด, ์ฑ…์„ ๊ตฌ๋งคํ•ด ์ง์ ‘ ์ฝ์–ด๋ณด์‹œ๊ธฐ๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๊ทน์ขŒํ‘œ๊ณ„ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์นด๋ฅดํŠธ ์ขŒํ‘œ๊ณ„๋ฅผ ๋งŽ์ด ์ด์šฉํ•˜๋Š”๋ฐ, ์‚ฌ์‹ค ํšŒ์ „์„ ํ•  ๋•Œ๋งˆ๋‹ค x ์™€ y ์˜ ๋ณ€ํ™”๋ฅผ ๋งค๋ฒˆ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ์›์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ r ๊ณผ θ ์˜ ๋‘ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ ๊ทน์ขŒํ‘œ๊ณ„(Polar coordinate system) ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ arctan ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฒกํ„ฐ์˜ ๊ฐ๋„๋ฅผ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ(tanθ = y/x ์ด๋ฏ€๋กœ, θ = arctan(y/x) ์ด ๋จ), arctan ํ•จ์ˆ˜๋Š” ์น˜์—ญ์ด -180๋„์—์„œ 180๋„๊นŒ์ง€ ๋ฐ–์— ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, x ์™€ y ๊ฐ’์„ ๋”ฐ๋กœ ์ „..

Game Dev/Game Math 2022. 10. 26. 06:29
Effective C++ | ํ•ญ๋ชฉ 50 : new ๋ฐ delete ๋ฅผ ์–ธ์ œ ๋ฐ”๊ฟ”์•ผ ์ข‹์€ ์†Œ๋ฆฌ๋ฅผ ๋“ค์„์ง€๋ฅผ ํŒŒ์•…ํ•ด ๋‘์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:34
Effective C++ | ํ•ญ๋ชฉ 49 : new ์ฒ˜๋ฆฌ์ž์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ž

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

Tutorials/C++ : Advanced 2022. 10. 25. 16:33
Effective C++ | ํ•ญ๋ชฉ 48 : ํ…œํ”Œ๋ฆฟ ๋ฉ”ํƒ€ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ํ•˜์ง€ ์•Š๊ฒ ๋Š”๊ฐ€?

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

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