๋ชฉ๋ก์ ์ฒด ๊ธ (1104)
KoreanFoodie's Study
1. ์ด๊ธฐ์ฌ์ ๋ด๋ ค๋๊ธฐ 2. ํ์์์ ๊นจ์ด๋๊ธฐ 3. ๋์์ค๊ฑด ๋์์ฃผ๊ธฐ ํ๋ฃจํ๋ฃจ๋ ์ฑ์คํ๊ฒ. ์ธ์ ์ ์ฒด๋ ๋๋๋๋ก. - ์ด๋์ง -
์ด๋๋ก ๊ฐ ํ์ฉ ๋ ๋๊ณ ์ถ์ ๊ธฐ๋ถ์ด๋ค. ์๋ฌด๋ ๋ชจ๋ฅด๋ ๊ณณ์ผ๋ก. ๋๋ฅผ ์๋ฌด๋ ๋ชจ๋ฅด๋ ๊ณณ์ผ๋ก. ๋ ๋๊ณ ์ถ๋ค๋ ๋ง์์ ์ผ์์ผ๋ก๋ถํฐ์ ๋ํผ๋ฅผ ๊ฟ๊พธ๋ ์๊ตฌ์ผ๊น. ์๋๋ฉด ๋ด๋ฉด์ ๊ด์ฐฐํ๊ธฐ ์ํ ์ฉ๊ฐํ ์๋์ผ๊น. ์ฆ๊ฑฐ์ธ๊น. ๊ณผ์ฐ ํ๋ณตํ ๊น. ๊ทธ๋ ๊ฒ ํด์ ์ค๋กฏ์ด ํผ์๊ฐ ๋๋ค๋ฉด, ๋๋ค์ ํ๋ก ์๊ธฐ๋ฅผ ํด์ผํ๋ค๋ฉด. ์ธ์์ ์์์ ์ฐจ๋จํ๊ธฐ ์ํด ํฅ๊ฒจ์ด ๋ ธ๋ซ์๋ฆฌ๊น์ง ๋๊บผ์ด ์ ๋ฆฌ์ฐฝ์ผ๋ก ๋ง์๋ฒ๋ฆฐ๋ค๋ฉด. ์ด๋๋ก ๊ฐ ๋ ๋๊ณ ์ถ๋ค๋ ๊ฐ๋ง์ ์๋ก์์ ๋ํ ๋์ ์ง์ฐฉ์ด ํฌ์๋ ๊ฒฐ๊ณผ๋ฌผ์ด๋ผ๊ณ ๋ง ์๊ฐํ์๋ค. ํ์ง๋ง ์ฌ์ค ๋ ๋๊ณ ์ถ์ ๋ง์์ ๋ง ๊ทธ๋๋ก ๋ ๋๋ ํ์ ๊ทธ ์์ฒด๋ฅผ ์ํํ๊ณ ์ ํจ์์ ๋น๋กฏ๋ ๊ฒ์์ ๊นจ๋ฌ์๋ค. ์ด๋๋ก ๋ ๋๋ ๊ฒ์ด ์ค์ํ๋ค๊ธฐ๋ณด๋ค, ๊ทธ๋ฅ. ์ด๋๋ก ๊ฐ ๋ ๋๋ ๊ฒ์ด ์ค์ํ์๋ค๋ ๊ฑฐ๋ค. ์ง๊ธ ๋๋ฅผ ์ฝ๋งค์ด๋ ๊ฒ๋ค๋ก๋ถํฐ ๋ฒ์ด๋์. ์จ๊ฐ ๊ตฌ์๊ณผ ์ฌ..
์์ฆ ๋ค์ด ๋ด๊ธ์ด ๋ถ์ฉ ์ฌ๋ฏธ์์ด์ง ์ด์ ๋ฅผ ๊นจ๋ฌ์๋ค. ๊ทธ๊ฑด ํ์ธ์ ์ถ์ ๊ด์ฐฐํ ์๊ฐ์ด ๋ถ์กฑํด์ก๊ธฐ ๋๋ฌธ์ด๋ค. ๋งํ์ํ์ ๊ฑฐ์ฅ์ด์ ์ง๋ธ๋ฆฌ ์คํ๋์ค์ ์ฐฝ๋ฆฝ๊ฐ์ธ ๋ฏธ์ผ์ํค ํ์ผ์ค๋ ์ธ๊ฐ๊ด์ฐฐ์ ์ค์์ฑ์ ์ธ๊ธํ ์ ์ด ์๋ค. ์ํํ๋์ด๋ผ๋ ๊ฒ ์ฌ์ค ์ธ๊ฐ๊ด์ฐฐ์์๋ถํฐ ์์ํ๋๊ฒ ์๋๊น. ์ด์ฐ๋์๋ , ์ง๊ธ์ ๋ด ๊ธ์ ์๋ก์ด ๋ง๊ณผ ํฅ์ด ๋ฐฐ์ด๋ค ์ฌ์ง๊ฐ ์๋ ์ํฉ์ด๋ค. ๊ทธ๋ฌ๋ ์๋ฌด๋ฆฌ ์๋ฆฌ๋ฅผ ๋ง์๊ฒ ํ๋ ค ์ ์จ๋, ๋ค์ฑ๋กญ์ง ๋ชปํด ๋ฌด๋ฏธ๊ฑด์กฐํ ์๋ฐ์. ์ฌ๋ฃ๋ฅผ ์๋ผ๋ ์๋น์ด ์์ฌ๋ฃ ๋ณธ์ฐ์ ๋ง์ ๋์ด์ฌ๋ฆฌ๋ ์๋ฆฌ๋ง์ ๋ด๋๋๋ค๋ ํ๊ณ๋ฅผ ๋๋ฏ, ๋ ๋ํ ์ต์ํ์ ๊ธ๊ฐ์ ๊ทธ๋ด๋ฏํ๊ฒ ํ๋ ์ดํ ํ๋ ค๋ง ํ๋ค. ๊ทธ๋ฌ๋ ๊ณจ์๋ ๊ฐ์์ง๋, ๋ด์ฉ์ ํฌ์ฅํ๋ ๋จ์ด๋ค๊ณผ ํํ์ ๋ณ์ฃผ๋ฅผ ์ฃผ๊ธฐ ์ํด ์๊ฐํ์ ์ฐ๋ ๊ฒ์ด๋ค. ๋ณ์ฃผ์ ๋ฆฌ๋ฉ์ดํฌ, ์ํ๋ง์ ํ์ ๊น์ง ์จ๊ฐ ๋๊ตฌ๋ค์..

์ด๋์ฐ๋์ "์ด๋์ฐ์ ์ธ๋ฆฌ์ผ C++ ๊ฒ์ ๊ฐ๋ฐ์ ์ ์" ์ฑ ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ์ค์ตํ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์ค์ต์ ํ์ํ ์๋ฃ๋ค์ ์ด ๋งํฌ์์, ์ ๊ฐ ์์ ํ ์์ ์์ค ์์ฑ๋ณธ์ ์ฌ๊ธฐ์์ ์ฐพ์๋ณด์ค ์ ์์ต๋๋ค. (์ ๋ ์ธ๋ฆฌ์ผ 4.27.2 ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์์ ํ์์ต๋๋ค) C++ ํด๋์ค ๋ง๋ค๊ธฐ ๋จผ์ , ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ C++ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด์. ํ์ผ->New C++ Class๋ฅผ ์ ํํ๊ณ , ๋ชจ๋ ํด๋์ค๋ฅผ ํ์ํ ๋ค Object๋ฅผ ์ ํํ๋ค. Object๋ ๋ํ์์์ ๋ง๋ค์ง๋ง, C++ ์ฝ๋์์ ์์ฑํ C++ํด๋์ค๋ UObject์ด๋ฉฐ ๋๋ฌธ์ U๊ฐ ์ ํ๋๋ค๋ ์ ์ ์ฐธ๊ณ ๋ก ์์๋์. C++ ํ๋ก์ ํธ๋ฅผ ์ด๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๋ค์ฏ์ง๊ฐ ํ๋ก์ ํธ์ ๋น๋ ๊ตฌ์ฑ์ ๋ณผ ์ ์๋ค. ๊ฐ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค. DebugGame : ์์ธํ ๋๋ฒ..
๋ฐ์น๋ฉฐ ๋์๊ฐ๋ค. ์ฑ์ ์๋ ์ฌ๊ณผ๋ฅผ ๊ฑด๋ด๋ฉฐ ๋ฑ์ฐ๋ณต ์ ์ ์์ฃผ๋จธ๋์ ๊ฐ๋ฐฉ์ ํญ ์น๋ค. ํ์น์ด ๋ค ๊ฐ์ ํ์น์ด ์๋๊ฐ๋ณด๋ค. ๋น ๋ฅธ ํ์น, ๋น ๋ฅธ ์ถ๊ตฌ. ์กฐ๊ธ์ด๋ผ๋ ๋ ๋นจ๋ฆฌ ๊ฐ๊ธฐ ์ํด์, ๋ฌด๋กํจ์ ๋งค์ผ ์ฐ์ตํ๋ ์ฌ๋๋ค. ๋ฌด๋ฃํ ํ์ ์ผ๋ก ๋ช ์ด ๋จ์งํ ์๊ฐ์ ์๋ผ๋ ค๋ ํ๋ฒํ ์ฌ๋๋ค. ํ๊ฐํจ์ ๊ดด๋ก์ํ๋ฉด์๋ ๋ค์ณ์ง๋ ๊ฒ์ ๊ฒฌ๋์ง๋ชปํ๋ ์ฌ๋๋ค. ๋ด์ผ๋, ๊ทธ ๋ค์๋ ๋ ๋ฌด์ง์ํ ํ๋ ฌ์ ๋ง๋ค ์ฌ๋๋ค. ๋น ๋ฅธ ์ถ๊ตฌ๋ ์ค๋๋ ๋ฌธ์ ์ฑ์๋ฅผ ์ด๋ฃจ๊ณ ์๋ค.
์ด๋ ์๊ฐ๋ถํฐ ์๋ก์ด ์ทจ๋ฏธ๊ฐ ์๊ฒผ๋ค. ์ด๋ํ ์คํ ๋ ๋ถ์ ์์กดํด ๋์ ๊ฐ๊ณ ์๋ฌด ์๊ฐ ์์ด ๋ ธ๋๋ฅผ ๋ฃ๋ ๊ฒ. ์ ๋๋ ๋ ธ๋์ฌ์๋ ์๋๋ค. ๋ฌด์กฐ๊ฑด ๊ฐ์ฑ์ ํน ๋น ์ง ์ ์์ด์ผ๋ง ํด. ๊ทธ๋ฌ๋ ์ค๋๋ ์์ํ์ธ ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ํ์ด๋์๋ณผ๊น. ํน ๋น ์ง๊ณ ์ถ์ผ๋๊น. ์ํ ์ ๋ฑ์ฅ์ธ๋ฌผ์ด ๋๋ค๋ฉด. ์๋ฌด ์๊ฐ ์์ด ์ฃผ์ด์ง ๊ฐ๋ณธ๋๋ก ์์ง์ด๋ ๋ง๋คํน์ด ๋ ์ ์๋ค๋ฉด. ๊ทธ๋์ ๋ ์ํ๊ฐ ์ข์์ง๊ณ ์๋ค. ํ ๋ป ์ ๊ณ ์ถ์ผ๋๊น. ์ฌํ ์ด๋ณ ๋ ธ๋๋ , ๋ฌ์ฝคํ ์ฌ๋ ๋ ธ๋๋ . ์๋๋ฉด ๊ฐ์ฑ ๋์น๋ ํํ ์์ ์ด๋ . ์ฃผ์ธ๊ณต์ด ์๋์ด๋ ๊ด์ฐฎ๋ค. ๊ทธ๋ฅ ๋ง๋ฆฌ์ค๋คํธ๊ฐ ๋๋ ๊ฒ์ผ๋ก๋ ์ถฉ๋ถํ๋๊น.
์ผ๊ธฐ๋ก ์ฐ๋ ค๋ ํ ๋ง๊ธ์กฐ์ฐจ, ๋ฉ๋ค์ด์ง ์์ธ์ด๋ก ๋ณ๋ชจ์ํค๋ ค๋ ์์ฌ์ผ๋ก ์ค์ผ๋์ด ๊ฐ๊ณ ์๋ค. ์ผ๊ธฐ์ ์ ํด๊ณ ๋ฐ์๋ฅผ ํด์ผ ํด. ๊ทธ๋ฅ ๋ด๋ฑ์ผ๋ฉด ๋๋ ๊ฒ์. ์ผ๊ธฐ๋ฅผ ์ฐ๋๋ฐ ์ ๊ทธ๋ฆฌ ๋จธ๋ฆฌ๋ฅผ ์ธ๋งค์ผ ํด. ๊ทธ๋ฅ ์๋ ๊ทธ๋๋ก. ๋ฐ์์ ๊ธฐ๋ง ํ๋ฉด ๋์์. ๋๋, ์ ์ ๊ธธ์ด์ง๊ณ ์๋ ๊ธ์. ๋ด๋ด, ๋ผ์๊น์ง ๋ง์ถ๋ ค๋ ์ด์คํ ์๋๋ฅผ. ๋์ ์์ฌ. ๋์๋ ์ธ๊ฐ์ ์์ฌ. ๋๋ง์ด ๋ณผ ์ผ๊ธฐ๋ง์ ๋์ค์น ์ ํ๊ฒ ๋ง๋๋ ๋ง์๋ ํ์์ด์ฌ.
์๋ฒ์ง๋ ๋์๊ฒ ์ด๋ฅด์ จ๋ค. ๋ถ์๋ฅผ ๋ณด๋ฉด ๊พน ์ฐธ๊ณ ์ง๋๊ฐ๋ผ๊ณ . ์ ๊น๋ง. ๋์๊ฒ ๊ฐ์ ๊ต์ก์ ์ค์์ฑ์ ์คํํ๋ค๊ฑฐ๋, ๋ด ์๋ฒ์ง์ ์ธ๊ฐ์ฑ์ ์๋จํ์ง๋ ์์์ผ๋ฉด ์ข๊ฒ ๋ค. ํ๊ตญ๋ง์ ๋๊น์ง ๋ค์ด๋ณผ ํ์๊ฐ ์๋ ๋ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋ง์ง๋ง์ ๋ง์ง๋ง๊น์ง ์ ์๋ง ํธํก์ ๊ฐ๋ค๋ฌ์ด ๋ณด์. ๋๊ตฐ๊ฐ๊ฐ ๋์๊ฒ ์ ์ผ ์กด๊ฒฝํ๋ ์ฌ๋์ด ๋๊ตฌ๋๊ณ ๋ฌป๋๋ค๋ฉด, ๋๋ ์๋ ์๋, 5๋ ์ ์๋ ๊ทธ๋ฌ๋ฏ ์๋ฒ์ง๋ฅผ ์ธ๊ธํ ๊ฒ์ด๋ค. ์ ์๋ฒ์ง๋ฅผ ์ ์ผ ์กด๊ฒฝํ๋ ์ธ๋ฌผ๋ก ๊ผฝ๋๊ณ ? ๋น์ฐํ๊ฒ๋, ์๋ฒ์ง๊ฐ ์ธ์์์ ์ ์ผ ๋ฉ์๋ ์ฌ๋์ด๊ธฐ์, ๋ฅ๋ ฅ์ด ์ ๋ง ์ถ์คํ์๊ธฐ์... ๊ฐ์ ํผ์์ ์ธ ์กฐ๊ฑด ๋๋ฌธ์ ์๋ ๊ฒ์ด๋ค. ๋ค๋ง, ๋์๊ฒ ์์ด ๋๋ฌด๋ ๊ณ ๋ง์ฐ์ ๋ถ์ด๊ธฐ ๋๋ฌธ์. ๋์๊ฒ ์ข์ผ์ ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ์ด์ผ๊ธฐํ ์๋ฐ์ ์๋๊ฒ ์๋๊น. ๋ฐ๋ฉด ํ ๋ฒ๋ ๋ง๋๋ณธ ์ ์๋, ์ด์ฉ๋ฉด ์ฃผ..

๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! C++ ์คํ์ผ์ ์บ์คํ ๊ธฐ์กด์ C ์ธ์ด์์๋ ์ปดํ์ผ๋ฌ๊ฐ ์์์ ์บ์คํ ํ๋ ์์์ (implicit) ์บ์คํ ๊ณผ, ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์บ์คํ ํ๋ผ๊ณ ์ง์ ํ๋ ๋ช ์์ (explicit) ์บ์คํ ์ด ์์๋ค. ํ์ง๋ง C++์์๋ ๋ค์๊ณผ ๊ฐ์ 4๊ฐ์ง์ ์บ์คํ ์ ์ ๊ณตํ๊ณ ์๋ค. 1. static_cast : ์ฐ๋ฆฌ๊ฐ ํํ ์๊ฐํ๋, ์ธ์ด์ ์ฐจ์์์ ์ง์ํ๋ ์ผ๋ฐ์ ์ธ ํ์ ๋ณํ 2. const_cast : ๊ฐ์ฒด์ ์์์ฑ(const)๋ฅผ ์์ ๋ ํ์ ๋ณํ. ์ฝ๊ฒ ๋งํด const int๊ฐ int๋ก ๋ฐ๋๋ค. 3. dynamic_cast : ํ์ ํด๋์ค ์ฌ์ด์์์ ๋ค์ด์บ์คํ 4. reinterpret_cast : ์..

๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! friend ํค์๋ ํด๋์ค ๋ด๋ถ์์ ๋ค๋ฅธ ํด๋์ค๋ ํจ์๋ค์ friend๋ก ์ ์ํ ์ ์๋๋ฐ, friend๋ก ์ ์๋ ํด๋์ค๋ ํจ์๋ค์ ์๋ ํด๋์ค์ private๋ก ์ ์๋ ๋ณ์๋ ํจ์๋ค์ ์ ๊ทผํ ์ ์๋ค. class A { private: void DoSth() {}; int a; friend class B; friend void func(); } class B { public: void b() { A a; a.DoSth(); a.a = 1; } } void func() { A aa; aa.a= 2; a.DoSth(); } ์์์ friend๋ก ์ง์ ๋ ํด๋์ค B์ ํจ์ func( )๋..