๐คํ๋ก๊ทธ๋๋ฐ ์ธ์ด/C++ ์ ๋ฆฌ
C++ ์ ๋ฆฌ - 29 (๊ฐ์ฒด์ ํด๋์ค, ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ, ์ถ์ํ์ ํด๋์ค, c++์ ํด๋์ค, ํด๋์ค ๋ฉค๋ฒํจ์์ ๊ตฌํ, ์ธ๋ผ์ธ ๋ฉ์๋, ํด๋์ค ์ ์ธ์ ์ผ๋ฐ์ ์ธ ํ์, ํด๋์ค ์์ฑ..
๊ฐ์ฒด์ ํด๋์ค ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ ํ๋ก๊ทธ๋จ ์ค๊ณ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค. OPP์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ ์ถ์ํ ์บก์ํ์ ๋ฐ์ดํฐ ์๋ ๋คํ ์์ ์ฝ๋์ ์ฌํ์ฉ ํด๋์ค(class)๋ ์ด๋ฌํ opp ๊ธฐ๋ฅ๋ค์ ๊ตฌํ ๋ฐ ๊ฒฐํฉํ๋๋ฐ ๊ฐ์ฅ ์ค์ํ c++ ๋๊ตฌ์ด๋ค. ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ opp์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ, ํ๋ก๊ทธ๋๋จธ๋ ๊ฐ์ฒด๋ฅผ ์์ ํ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ์, ์ฌ์ฉ์๊ฐ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํ๋ฉด์, ์ฌ์ฉ์๊ฐ ์ดํดํ๋ ๋ฐฉ์๋๋ก ๊ฐ์ฒด์ ์ด์ ์ ๋ง์ถ๋ค. ์ถ์ํ์ ํด๋์ค -๋ฐ์ดํฐํ์ด๋ ๋ฌด์์ธ๊ฐ? ๊ธฐ๋ณธํ์ ์์ ํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ธ ๊ฐ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ ๊ฐ์ฒด์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ค ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋นํธ๋ค์ ์ด๋ป๊ฒ ํด์ํ ์ง ๊ฒฐ์ ํ๋ค ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์..
C++ ์ ๋ฆฌ - 28 (new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ์ด๊ธฐํ, ์์น ์ง์ new ์ฐ์ฐ์, ์ด๋ฆ ๊ณต๊ฐ, using ์ ์ธ๊ณผ using ์ง์์, ์ด๋ฆ ๊ณต๊ฐ์ ๋ํ ๋ณด์ถฉ)
new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ์ด๊ธฐํ ๋ณ์๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ๊ธฐ ์ํ ์ ์ฅ๊ณต๊ฐ์ ์ํ๋ค๋ฉด, ๊ดํธ๋ฅผ ์ด์ฉํด ์ด๊ธฐ ๊ฐ ์ค์ ๊ฐ๋ฅ int *pi = new int(6); double *pd = new double(99.99); ์์ฐจ์ ์ธ ๊ตฌ์กฐ์ฒด๋ ๋ณ์์ ์ด๊ธฐํ๋ c++11์์๋ง ๊ฐ๋ฅ ๋ํ ์ค๊ดํธ๋ฅผ ์ด์ฉํ ๋ฆฌ์คํธ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํด์ผ ํจ struct where{double x;double y;double z;}; where *one = new where{2.5,5.7,7.2}; int *ar = new int[4]{2,4,6,7}; c++11์์๋ ๋จ์ผ ๊ฐ์ ๊ฐ์ง๋ ๋ณ์์ ๋ํด์๋ ์ค๊ดํธ๋ฅผ ์ด์ฉํ ์ด๊ธฐํ ๊ฐ๋ฅ int *pin = new int{6}; double *pdo = new double{99.99}; ์์น ์ง์ ne..
C++ ์ ๋ฆฌ - 27 (์ ์ ์กด์ ๊ธฐ๊ฐ, ๋ด๋ถ ๋งํฌ, ์ ์ ๊ธฐ์ต ์กด์ ์๊ฐ, ๋งํฌ ์์, ๊ธฐ์ต ๊ณต๊ฐ ์ ํ์, Cv-์ ํ์, mutable, const์ ๋ํ ๋ณด์ถฉ, ํจ์์ ๋งํฌ, ๊ธฐ์ต ๊ณต๊ฐ ํ์๊ณผ ๋์ ๋์ )
์ ์ ์กด์ ๊ธฐ๊ฐ, ๋ด๋ถ ๋งํฌ ์๋ก ๋ค๋ฅธ ํ์ผ์์ ์๋ก ๋ค๋ฅธ ๋ณ์๋ค์๊ฒ ๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๋ฒ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ ์๋ ์ธ๋ถ ๋ณ์๋ฅผ ํ๋์ ํ์ผ์์ static ์ธ๋ถ ๋ณ์๋ก ์ ์ธํ๋ค๋ฉด, static์ผ๋ก ์ ์ธ๋ ๋ณ์๋ ๊ทธ ํ์ผ์์๋ง ์ฌ์ฉ๋๋ ๋ณ์๋ก ์ธ์๋๋ค. ์ ์ ๊ธฐ์ต ์กด์ ์๊ฐ, ๋งํฌ ์์ ๋ธ๋ก ์์์ static์ ์ฌ์ฉํ๋ฉด, static์ด ์ง์ญ ๋ณ์๋ฅผ ์ ์ ๊ธฐ์ต ์กด์ ์๊ฐ์ ๊ฐ๊ฒ ๋ง๋ ๋ค. ์ด๋ฐ ๋ณ์๋ค์ ๋ธ๋ก ์์์๋ง ์๋ ค์ง์ง๋ง ๊ทธ ๋ธ๋ก์ด ํ๋ํ์ง ์๋ ๋์์๋ ๊ณ์ ์กด์ฌํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ ์ ์ง์ญ ๋ณ์๋ ํจ์์ ํธ์ถ๊ณผ ํธ์ถ ์ฌ์ด์์๋ ๊ฐ ๋ณด์กด ๊ฐ๋ฅ ๊ธฐ์ต ๊ณต๊ฐ ์ ํ์ auto(C++11์์๋ ์ ํ์์์ ๋น ์ง) register static extern thread_local(C++11์์ ์ถ๊ฐ๋จ) mutable..
C++ ์ ๋ฆฌ - 26 (๋ถํ ์ปดํ์ผ,๊ธฐ์ต ์กด์ ์๊ฐ, ์ฌ์ฉ๋ฒ์, ๋งํฌ,์๋ ๋ณ์,์ ์ ๋ณ์, ์ ์ ์กด์ ์๊ฐ, ์ธ๋ถ ๋งํฌ,์ฌ์ฉ ๋ฒ์ ๊ฒฐ์ ์ฐ์ฐ์)
๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ๊ณผ ์ด๋ฆ ๊ณต๊ฐ ๋ถํ ์ปดํ์ผ ์๋ณธ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ๋ถ๋ถ์ผ๋ก ๋ถํ ํ ์ ์๋ค. 1. ๊ตฌ์กฐ์ฒด ์ ์ธ๊ณผ, ๊ทธ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํจ์๋ค์ ์ํ์ด ๋ค์ด์๋ ํค๋ ํ์ผ 2. ๊ทธ ๊ตฌ์กฐ์ฒด์ ๊ด๋ จ๋ ํจ์๋ค์ ์ฝ๋๊ฐ ๋ค์ด์๋ ์์ค์ฝ๋ ํ์ผ 3. ๊ทธ ๊ตฌ์กฐ์ฒด์ ๊ด๋ จ๋ ํจ์๋ค์ ํธ์ถํ๋ ์ฝ๋๊ฐ ๋ค์ด์๋ ์์ค์ฝ๋ ํ์ผ ํํ ํค๋ ํ์ผ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ ๋ฃ๋๋ค. 1. ํจ์ ์ํ 2. #define์ด๋ const๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ๋ ๊ธฐํธ ์์ 3. ๊ตฌ์กฐ์ฒด ์ ์ธ 4. ํด๋์ค ์ ์ธ 5. ํ ํ๋ฆฟ ์ ์ธ 6. ์ธ๋ผ์ธ ํจ์ ํ์ผ ์ด๋ฆ์ด ๊ดํธ๋ก ๋ฌถ์ฌ์์ผ๋ฉด, ์ปดํ์ผ๋ฌ๋ ํ์ค ํค๋ ํ์ผ๋ค์ด ๋ค์ด์๋ ํธ์คํธ ์์คํ ์ ํ์ผ ์์คํ ์์ญ์์ ๊ทธ๊ฒ์ ์ฐพ๋๋ค. ๊ทธ๋ฌ๋ ํฐ ๋ฐ์ดํ๋ก ๋ฌถ์ฌ์์ผ๋ฉด, ์ปดํ์ผ๋ฌ๋ ๋จผ์ ํ์ฌ ์์ ๋ํ ํ ๋ฆฌ๋ ์์ค..
C++ ์ ๋ฆฌ - 25 (ํจ์ ํ ํ๋ฆฟ,ํ ํ๋ฆฟ์ ์ค๋ฒ๋ก๋ฉ,ํ ํ๋ฆฟ ์ ํ,๋ช ์์ ํน์ํ,๊ตฌ์ฒดํ์ ํน์ํ,์ค๋ฒ๋ก๋ฉ ๋ถ์,์ ํํ ๋์๊ณผ ์ต์ ์ ๋์)
ํจ์ ํ ํ๋ฆฟ ํจ์ ํ ํ๋ฆฟ์ ํจ์์ ์ผ๋ฐํ ์์ ์ด๋ค. ์ฆ, ํจ์ ํ ํ๋ฆฟ์ int ํ์ด๋ double ํ๊ณผ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ๋ฐ์ดํฐํ์ ํฌ๊ดํ ์ ์๋ ์ผ๋ฐํ์ผ๋ก ํจ์๋ฅผ ์ ์ํ๋ค. ํ ํ๋ฆฟ์ ๊ตฌ์ฒด์ ์ธ ๋ฐ์ดํฐํ ๋์ , ์ผ๋ฐํ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ๊ฒ ๋๋ฏ๋ก ์ด๊ฒ์ ์ผ๋ฐํ ํ๋ก๊ทธ๋๋ฐ(generic programming)์ด๋ผ๊ณ ํ๋ค. ๋ฐ์ดํฐํ์ด ๋งค๊ฐ๋ณ์์ ์ํด ํํ๋๋ฏ๋ก, ํ ํ๋ฆฟ์ ๋๋ก๋ ๋งค๊ฐ๋ณ์์ ๋ฐ์ดํฐํ(parameterized type)์ด๋ผ๊ณ ํจ. ์ฌ์ฉ ์์ //ํจ์ ํ ํ๋ฆฟ ์ํ template void Swap(Any &a, Any &b); //ํจ์ ํ ํ๋ฆฟ ์ ์ template void Swap(Any &a,Any &b) { Any temp; temp=a; a=b; b=temp; } ํ ํ๋ฆฟ์ ์ค๋ฒ ๋ก๋ฉ ์ผ๋ฐ์ ์ธ ์ค..
C++ ์ ๋ฆฌ - 24 (ํด๋์ค ๊ฐ์ฒด์ ์ฐธ์กฐ,๊ฐ์ฒด,์์,์ฐธ์กฐ,setf(),์ฐธ์กฐ ๋งค๊ฐ๋ณ์๋ ์ธ์ ์ฌ์ฉํ๋๊ฐ?,ํจ์๊ฐ ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ฌ์ฉ๋ง ํ๋ ๊ฒฝ์ฐ,ํจ์๊ฐ ํธ์ถ ํจ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ..
ํด๋์ค ๊ฐ์ฒด์ ์ฐธ์กฐ ์ผ๋ฐ์ ์ผ๋ก c++๋, ํด๋์ค ๊ฐ์ฒด๋ฅผ ํจ์์ ์ ๋ฌํ ๋ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํจ ์๋ฅผ ๋ค๋ฉด, string,ostream,istream,ofstream,ifstream ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ทจํ๋ ํจ์๋ค์ ์ฐธ์กฐ ๋งค๊ฐ๋ณ์ ์ฌ์ฉ ๊ฐ๋ฅ ๋ ํ๋์ ๊ฐ์ฒด ๋ ์จ : ๊ฐ์ฒด,์์,์ฐธ์กฐ ์์ : ํ ํด๋์ค์์ ๋ค๋ฅธ ํด๋์ค๋ก ๊ธฐ๋ฅ ์ ๋ฌ์ ๊ฐ๋ฅํ๊ฒ ํ๋ c++ ์ธ์ด์ ๊ธฐ๋ฅ ostream์ ๊ธฐ์ด ํด๋์ค(base class)๋ผ ํ๊ณ ofstream์ ํ์ ํด๋์ค(derived class)๋ผ ํ ๋ ํ์ ํด๋์ค๋ ๊ธฐ์ด ํด๋์ค์ ๋ฉ์๋๋ค์ ์์ํจ. ์ฆ, ofstream ๊ฐ์ฒด๊ฐ precision(),setf()๋ฑ์ ํฌ๋งทํ ๋ฉ์๋์ ๊ฐ์ ๊ธฐ์ด ํด๋์ค์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํจ. ์์์ ๋ ํ ๊ฐ์ง ์ธก๋ฉด์, ๋ฐ์ดํฐํ ๋ณํ ์์ด ..
C++ ์ ๋ฆฌ - 23 (์ฐธ์กฐ ๋ณ์,์ฐธ์กฐ ๋ณ์์ ์ ์ธ,ํจ์ ๋งค๊ฐ๋ณ์๋ก์์ ์ฐธ์กฐ,์ฐธ์กฐ์ ํน์ฑ,lvalue,๊ตฌ์กฐ์ฒด์ ๋ํ ์ฐธ์กฐ,์ฐธ์กฐ๋ฅผ ๋ฆฌํดํ ๋ ์ฃผ์ํ ์ )
์ฐธ์กฐ ๋ณ์ ์ฐธ์กฐ(reference)๋ ๋ฏธ๋ฆฌ ์ ์๋ ์ด๋ค ๋ณ์์ ์ค์ ์ด๋ฆ ๋์ ์ธ ์ ์๋ ๋์ฉ ์ด๋ฆ์ด๋ค. ์ฐธ์กฐ์ ์ฃผ๋ ์ฉ๋๋ ํจ์์ ํ์ ๋งค๊ฐ๋ณ์์ ์ฌ์ฉํ๋ ๊ฒ. ์ฐธ์กฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ฉด, ๊ทธ ํจ์๋ ๋ณต์ฌ๋ณธ ๋์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ ํจ ์ฐธ์กฐ ๋ณ์์ ์ ์ธ c์ c++์ ๋ณ์์ ์ฃผ์๋ฅผ ๋ํ๋ด๊ธฐ ์ํด & ๊ธฐํธ๋ฅผ ์ฌ์ฉ int rats; int & rodents=rats; // rodents๋ฅผ rats์ ๋์ฉ ์ด๋ฆ์ผ๋ก ๋ง๋ฌ rats์ rodents๋ ๊ฐ์ ๊ฐ๊ณผ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์ ์ฐธ์กฐ๋ ๋ง๋ค ๋ ๋ฐ๋์ ์ด๊ธฐํ๋ฅผ ํด์ผ ํ๊ณ , ์ผ๋จ ์ด๋ค ํน์ ๋ณ์์ ์ฐ๊ฒฐ๋๋ฉด ๊ทธ๊ฒ์ ๊ณ ์ํด์ผ ํจ int rats=101; int & rodents=rats; int bunnies=50; rodents=bunnies; // ..
C++ ์ ๋ฆฌ - 22 (ํจ์๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ,ํจ์ ํฌ์ธํฐ์ ๊ธฐ์ด,ํจ์ ํฌ์ธํฐ์ ๋ฐฐ์ด,c++ ์ธ๋ผ์ธ(inline) ํจ์)
ํจ์๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ ๋ค๋ฅธ ํจ์์ ์ฃผ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ทจํ๋ ํจ์ ์์ฑ ๊ฐ๋ฅ ์ฆ, ์ฒซ ๋ฒ์ฌ ํจ์๊ฐ ๋ ๋ฒ์งธ ํจ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐพ์๋ด ์คํํ๋๋ก ํ ์ ์๋ค. ์ด ๋ฐฉ์์ ๋ค๋ฅธ ์๊ฐ์ ๋ค๋ฅธ ํจ์์ ์ฃผ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ ๋ค. ์ฒซ ๋ฒ์งธ ํจ์๊ฐ ๋ค๋ฅธ ์๊ฐ์ ๋ค๋ฅธ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธ ํจ์ ํฌ์ธํฐ์ ๊ธฐ์ด 1. ํจ์์ ์ฃผ์ ์ป๊ธฐ think()๊ฐ ํจ์๋ผ๋ฉด think๋ ๊ทธ ํจ์์ ์ฃผ์. ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋ ค๋ฉด ํจ์ ์ด๋ฆ๋ง ์ ๋ฌํ๋ฉด ๋จ. process(think); //think()์ ์ฃผ์ ์ ๋ฌ thought(think()); // thought()์ think()์ ๋ฆฌํด๊ฐ ์ ๋ฌ 2. ํจ์๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ์ ์ ์ธ ํจ์๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ๋ฅผ ์ ์ธํ ๋, ๊ทธ ํฌ์ธํฐ๊ฐ ์ง์ํ๋ ํจ์์ ๋ฐ์ดํฐํ์..
C++ ์ ๋ฆฌ - 21 (ํจ์์ C์คํ์ผ์ ๋ฌธ์์ด, ํจ์์ ๊ตฌ์กฐ์ฒด,ํจ์์ string ํด๋์ค ๊ฐ์ฒด, ํจ์์ array ๊ฐ์ฒด, ์ฌ๊ทํธ์ถ)
ํจ์์ C ์คํ์ผ์ ๋ฌธ์์ด C ์คํ์ผ ๋ฌธ์์ด์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ ํจ์ -๋ฌธ์์ด์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ 1. charํ์ ๋ฐฐ์ด 2. ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ ๋ฌธ์์ด ์์ (๋ฌธ์์ด ๋ฆฌํฐ๋ด) 3. ๋ฌธ์์ด์ ์ฃผ์๋ก ์ค์ ๋ char ํ์ ์ง์ํ๋ ํฌ์ธํฐ ์ธ ๊ฐ์ง ๋ชจ๋ charํ์ ์ง์ํ๋ ํฌ์ธํฐ ์ด๋ฏ๋ก ๋ชจ๋ ๋ฌธ์์ด ์ฒ๋ฆฌ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉ ๊ฐ๋ฅํจ char ghost[15]="galloping"; cout
C++ ์ ๋ฆฌ - 20 (ํฌ์ธํฐ์ const, ํจ์์ 2์ฐจ์ ๋ฐฐ์ด)
ํฌ์ธํฐ์ const const๋ผ๋ ํค์๋๋ ํฌ์ธํฐ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋๋ค. 1. ์์ ๊ฐ์ฒด๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ๋ฅผ ๋ง๋๋ ๊ฒ 2. ํฌ์ธํฐ ์์ ์ ์์๋ก ๋ง๋๋ ๊ฒ int age = 39; const int * pt = &age; *pt=20; // pt๋ const int๋ฅผ ์ง์ํ๊ณ ์์ผ๋ฏ๋ก ์ฌ์ฉ ๋ถ๊ฐ age=20; //age๋ const๋ก ์ ์ธ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ๊ฐ๋ฅ const ๋ณ์์ ์ฃผ์๋ฅผ const๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ์ ๋์ ๊ฐ๋ฅ const ๋ณ์์ ์ฃผ์๋ฅผ ์ผ๋ฐ ํฌ์ธํฐ์ ๋์ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ const float g_earth=9.80; const float *pe=&g_earth; //์ฌ์ฉ ๊ฐ๋ฅ const float g_moon=1.63; float *pm=&g_moon; //์ฌ์ฉ ๋ถ๊ฐ int..