๋ชฉ๋ก์ ์ฒด ๊ธ (1099)
KoreanFoodie's Study
๋ฐ์น๋ฉฐ ๋์๊ฐ๋ค. ์ฑ์ ์๋ ์ฌ๊ณผ๋ฅผ ๊ฑด๋ด๋ฉฐ ๋ฑ์ฐ๋ณต ์ ์ ์์ฃผ๋จธ๋์ ๊ฐ๋ฐฉ์ ํญ ์น๋ค. ํ์น์ด ๋ค ๊ฐ์ ํ์น์ด ์๋๊ฐ๋ณด๋ค. ๋น ๋ฅธ ํ์น, ๋น ๋ฅธ ์ถ๊ตฌ. ์กฐ๊ธ์ด๋ผ๋ ๋ ๋นจ๋ฆฌ ๊ฐ๊ธฐ ์ํด์, ๋ฌด๋กํจ์ ๋งค์ผ ์ฐ์ตํ๋ ์ฌ๋๋ค. ๋ฌด๋ฃํ ํ์ ์ผ๋ก ๋ช ์ด ๋จ์งํ ์๊ฐ์ ์๋ผ๋ ค๋ ํ๋ฒํ ์ฌ๋๋ค. ํ๊ฐํจ์ ๊ดด๋ก์ํ๋ฉด์๋ ๋ค์ณ์ง๋ ๊ฒ์ ๊ฒฌ๋์ง๋ชปํ๋ ์ฌ๋๋ค. ๋ด์ผ๋, ๊ทธ ๋ค์๋ ๋ ๋ฌด์ง์ํ ํ๋ ฌ์ ๋ง๋ค ์ฌ๋๋ค. ๋น ๋ฅธ ์ถ๊ตฌ๋ ์ค๋๋ ๋ฌธ์ ์ฑ์๋ฅผ ์ด๋ฃจ๊ณ ์๋ค.
์ด๋ ์๊ฐ๋ถํฐ ์๋ก์ด ์ทจ๋ฏธ๊ฐ ์๊ฒผ๋ค. ์ด๋ํ ์คํ ๋ ๋ถ์ ์์กดํด ๋์ ๊ฐ๊ณ ์๋ฌด ์๊ฐ ์์ด ๋ ธ๋๋ฅผ ๋ฃ๋ ๊ฒ. ์ ๋๋ ๋ ธ๋์ฌ์๋ ์๋๋ค. ๋ฌด์กฐ๊ฑด ๊ฐ์ฑ์ ํน ๋น ์ง ์ ์์ด์ผ๋ง ํด. ๊ทธ๋ฌ๋ ์ค๋๋ ์์ํ์ธ ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ํ์ด๋์๋ณผ๊น. ํน ๋น ์ง๊ณ ์ถ์ผ๋๊น. ์ํ ์ ๋ฑ์ฅ์ธ๋ฌผ์ด ๋๋ค๋ฉด. ์๋ฌด ์๊ฐ ์์ด ์ฃผ์ด์ง ๊ฐ๋ณธ๋๋ก ์์ง์ด๋ ๋ง๋คํน์ด ๋ ์ ์๋ค๋ฉด. ๊ทธ๋์ ๋ ์ํ๊ฐ ์ข์์ง๊ณ ์๋ค. ํ ๋ป ์ ๊ณ ์ถ์ผ๋๊น. ์ฌํ ์ด๋ณ ๋ ธ๋๋ , ๋ฌ์ฝคํ ์ฌ๋ ๋ ธ๋๋ . ์๋๋ฉด ๊ฐ์ฑ ๋์น๋ ํํ ์์ ์ด๋ . ์ฃผ์ธ๊ณต์ด ์๋์ด๋ ๊ด์ฐฎ๋ค. ๊ทธ๋ฅ ๋ง๋ฆฌ์ค๋คํธ๊ฐ ๋๋ ๊ฒ์ผ๋ก๋ ์ถฉ๋ถํ๋๊น.
์ผ๊ธฐ๋ก ์ฐ๋ ค๋ ํ ๋ง๊ธ์กฐ์ฐจ, ๋ฉ๋ค์ด์ง ์์ธ์ด๋ก ๋ณ๋ชจ์ํค๋ ค๋ ์์ฌ์ผ๋ก ์ค์ผ๋์ด ๊ฐ๊ณ ์๋ค. ์ผ๊ธฐ์ ์ ํด๊ณ ๋ฐ์๋ฅผ ํด์ผ ํด. ๊ทธ๋ฅ ๋ด๋ฑ์ผ๋ฉด ๋๋ ๊ฒ์. ์ผ๊ธฐ๋ฅผ ์ฐ๋๋ฐ ์ ๊ทธ๋ฆฌ ๋จธ๋ฆฌ๋ฅผ ์ธ๋งค์ผ ํด. ๊ทธ๋ฅ ์๋ ๊ทธ๋๋ก. ๋ฐ์์ ๊ธฐ๋ง ํ๋ฉด ๋์์. ๋๋, ์ ์ ๊ธธ์ด์ง๊ณ ์๋ ๊ธ์. ๋ด๋ด, ๋ผ์๊น์ง ๋ง์ถ๋ ค๋ ์ด์คํ ์๋๋ฅผ. ๋์ ์์ฌ. ๋์๋ ์ธ๊ฐ์ ์์ฌ. ๋๋ง์ด ๋ณผ ์ผ๊ธฐ๋ง์ ๋์ค์น ์ ํ๊ฒ ๋ง๋๋ ๋ง์๋ ํ์์ด์ฌ.
์๋ฒ์ง๋ ๋์๊ฒ ์ด๋ฅด์ จ๋ค. ๋ถ์๋ฅผ ๋ณด๋ฉด ๊พน ์ฐธ๊ณ ์ง๋๊ฐ๋ผ๊ณ . ์ ๊น๋ง. ๋์๊ฒ ๊ฐ์ ๊ต์ก์ ์ค์์ฑ์ ์คํํ๋ค๊ฑฐ๋, ๋ด ์๋ฒ์ง์ ์ธ๊ฐ์ฑ์ ์๋จํ์ง๋ ์์์ผ๋ฉด ์ข๊ฒ ๋ค. ํ๊ตญ๋ง์ ๋๊น์ง ๋ค์ด๋ณผ ํ์๊ฐ ์๋ ๋ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋ง์ง๋ง์ ๋ง์ง๋ง๊น์ง ์ ์๋ง ํธํก์ ๊ฐ๋ค๋ฌ์ด ๋ณด์. ๋๊ตฐ๊ฐ๊ฐ ๋์๊ฒ ์ ์ผ ์กด๊ฒฝํ๋ ์ฌ๋์ด ๋๊ตฌ๋๊ณ ๋ฌป๋๋ค๋ฉด, ๋๋ ์๋ ์๋, 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( )๋..
๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! MyString์ '==' ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ์ด๋ฏธ MyString class์์ compareํจ์๋ฅผ ๋ง๋ค์๋ค๋ฉด, ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ๊ฐ๋จํ ๊ตฌํํ ์ ์๋ค. bool MyString::operator==(const MyString& str) { return !compare(str); } ๋์ ์ฐ์ฐ์ ํจ์ ๋ณต์์๋ฅผ ๊ตฌํํ Complex ํด๋์ค์์ '=' ์ฐ์ฐ์ ํจ์๋ฅผ ๊ตฌํํ๋ค๊ณ ํด ๋ณด์. Complex& Complex::operator=(const Complex& c) { real = c.real; img = c.img; return *this; } ์ ์ฐธ์กฐ์(Complex &)๋ก ๊ฐ์ ..
๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! explicit ํค์๋ explicit ํค์๋๋, ๊ฐ๋จํ ๋งํด ์์์ ํ ๋ณํ์ ํ์ฉํ์ง ์์ ๋ ๋ถ์ฌ์ฃผ๋ ํค์๋์ด๋ค. ์๋ฅผ ๋ค์ด, ์ด์ ์ ๋ง๋ค์๋ MyString ํด๋์ค์ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์์ ํจ์๋ฅผ ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. MyString::MyString(int capacity) { string_length = 0; string_content = new char[capacity]; memory_capacity = capacity; } void MyString::DoSomething(MyString s) {}; ๋ง์ฝ, explicit์ด ์๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ํธ์ถ์ ์ ์์ ์ผ๋ก ์๋..
๋ค์ด๋ด. ๋ด๊ฐ ๋ ธ๋๋ฅผ ๋ค์ผ๋ฉฐ ์์ค์ปฌ๋ ์ดํฐ๋ฅผ ์ฒ์ฒํ ๋ด๋ ค๊ฐ๊ณ ์์๋๋ฐ ๋ง์ผ. ๋ด๋ ค๊ฐ๋ค ๋ณด๋ ์ค์ณ ์ง๋์น๋ ์ฌ๋๋ค๋ ์ญ์ ๋์ ๊ฐ์ ์์ดํ ํ๋ก๋ฅผ ๊ฐ๊ณ ์๋๋ผ๊ณ . ๊ทผ๋ฐ ๊ทธ ์ค ํ ๋ถ์ด ์์ดํ ํ๋ก๋ฅผ ๋จ์ด๋จ๋ฆฐ๊ฑฐ์ผ. ์ผ์ด์ค๋ฅผ ๋ซ๋ค๊ฐ. ์ด์ฉ๊ธด ์ด์งธ, ์น์ ํจ์ด ๋ชจํ ์ธ ๋ด๊ฐ ๋ชป ๋ณธ์ฒ ํ ์ ์์์ง. ๊ทธ๋์ ๋ง์น ์นด๋ ๋ง์ ์ ํ๋ฏ ๊ณผ์ฅ๋ ์์ง์ผ๋ก ํ๊ฒจ ๋๊ฐ๋ ์์ด ํ์ ํ๋, ๋ ์ง์ด ๊ทธ๋ถ์๊ฒ ๊ฑด๋ด์ฃผ์์ด. ๊น์ง ๋๋ผ ์ฒญ์ค๋ชจ์ฒ๋ผ ๋์ ๋ฅ๊ทธ๋๊ฒ ๋ฌ ๊ทธ๋ถ์ ์์ดํ ํ์ชฝ์ ์ด์ํ๊ฒ ๋ค๊ณ ์์์ง. ๋ง์นจ ๋๋ ์์ดํ์ ๋ผ๊ณ ์์๊ธฐ์, ์ผ์ชฝ ์ฝฉ๋๋ฌผ์ ์ ์ ๋นผ์ด๋ค๊ณ ๊ทธ๋ถ์ ์์ดํ์ ๊ฐ๋ณ๊ฒ ๋ถ๋ชํ์ด. Cheers. ์์ดํ ๊ฑด๋ฐฐ์ ํจ๊ป ๋๋ ๋์ง๋ง์ด ๊ทธ๋ฐ ๋ฌธ๊ตฌ๋ฅผ ๋ด๋ฑ๊ณ ์ ์ ํ ๊ทธ ์๋ฆฌ๋ฅผ ๋น ์ ธ๋์์ด. ์๋ง ๋ชจ๋ฅด๊ธด ๋ชฐ๋ผ๋, ๊ทธ ๋ถ์๊ฒ๋ ํ..
๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! ๋ฌธ์์ด ํด๋์ค ๊ธฐ์กด C์ธ์ด์์๋ ๋ฌธ์์ด์ ๋ง์ง๋ง์ ๋ ๊ฐ('\0')์ ์ฝ์ ํ๋ค. C++์์๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก string ํด๋์ค๋ฅผ ์ ๊ณตํ๊ณ ์์ผ๋ฏ๋ก, char* ๋์ string์ ์ฌ์ฉํ์! ์ง์ String Class๋ฅผ ๋ง๋ค์ด ๋ณด๋ ๊ฒ์ ์ข์ ์ฐ์ต์ด ๋๋ค. ํ์ ๋ช ์ธ๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋ณ์ : ๋ฌธ์์ด ๊ธธ์ด, ๋ฌธ์์ด ๋ด์ฉ, ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ๋ฉ์๋ : ์์ฑ์, ์๋ฉธ์, insert, erase, find, reserve, assign, compare ๋๋ณด๊ธฐ์ ์์ ์ฝ๋๋ฅผ ๋ฃ์ด ๋์๋ค. ๋๋ณด๊ธฐ ๋ชจ๋์ ์ฝ๋์์ ์ ์ํ MyString ํด๋์ค ์ฝ๋ ์์ : #include // str..