PROGRAMMING/C & C++(22)
-
22. [C++] ํ ํ๋ฆฟ (Template)
ํ ํ๋ฆฟ (Template) ์๋ฃํ์ ์ฝ๋งค์ด์ง ์๊ณ ๋ชจ๋ ํธํํธ๋๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ฒ ๋์์ฃผ๋ C++ ๊ธฐ๋ฅ. 1. ํจ์ ํ ํ๋ฆฟ ํจ์ ํ ํ๋ฆฟ์ ํจ์๋ฅผ ๋ง๋ค์ด ๋ธ๋ค. ํจ์์ ๊ธฐ๋ฅ์ ๊ฒฐ์ ๋์ด ์์ง๋ง, ์๋ฃํ์ ๊ฒฐ์ ๋์ด์์ง ์๋ค. ๋์ค์ T๋ฅผ ๋์ ํด์ ์ค์ ์๋ฃํ์ ๊ฒฐ์ ํด์ผํ๋ค. (typename์ ๋์ ํด์ class๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค. T๋ผ๋ ๋ฌธ์ ๋์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์ฌ์ฉํด๋ ๋๋ค.) ์์ ๋ณด์ธ ๋ค์์ ์ ์๋ฅผ ๊ฐ๋ฆฌ์ผ 'ํจ์ ํ ํ๋ฆฟ(funtion template)'์ด๋ผ ํ๋ค. ๋ฐ๋ฉด, ์์ ํ ํ๋ฆฟ์ ๊ธฐ๋ฐ์ผ๋ก ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋ค์ด ๋ด๋ ํจ์๋ค์ 'ํ ํ๋ฆฟ ํจ์(template funtion)'์ด๋ผ ํ๋ค. int Add(int a, int b) { return a+b; } 2. ๋ ๊ฐ ์ด์์ typename ์ง์ ํ ํ๋ฆฟ์..
2019.06.18 -
21. [C++] ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ C++์์๋ ํจ์ ๋ฟ๋ง ์๋๋ผ ์ฐ์ฐ์๋ ์ค๋ฒ๋ก๋ฉ์ด ๊ฐ๋ฅํ๋ค. ์ฌ์ฉ์๊ฐ ๊ธฐ์กด์ ์ฐ์ฐ์๋ฅผ ์ฌ์ ์ํ๋ ํด๋์ค ๋ฌธ๋ฒ์ด๋ค. ์๋ก์ด ์ฐ์ฐ์๋ฅผ ์ฐฝ์กฐํ๋ ๋ฌธ๋ฒ์ ์๋๋ค. ๊ธฐ์กด ์ฐ์ฐ์์ ๋ณธ์ง์ ํ๋ ค์ ์๋๋ค. ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ๋ฐฉ๋ฒ์๋ ๋ค์ ๋ ๊ฐ์ง๊ฐ ์๋ค. 1. ๋ฉค๋ฒํจ์์ ์ํ ๋ฐฉ๋ฒ 2. ์ ์ญํจ์์ ์ํ ๋ฐฉ๋ฒ. ๋ฉค๋ฒ ํจ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ฒ๋ก๋ฉ๋ ํจ์๊ฐ ์ ์ญํจ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ฒ๋ก๋ฉ๋ ํจ์๋ณด๋ค ์ฐ์ ์ ํธ์ถ๋๋ค. [ 1. ๋ฉค๋ฒ ํจ์์ ์ํ ๋ฐฉ๋ฒ ] 'operator' ํค์๋์ '์ฐ์ฐ์'๋ฅผ ๋ฌถ์ด์ ํจ์์ ์ด๋ฆ์ ์ ์ํ๋ฉด, ํจ์์ ์ด๋ฆ์ ์ด์ฉํ ํจ์ ํธ์ถ ๋ฟ๋ง ์๋๋ผ, ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ํจ์์ ํธ์ถ๋ ํ์ฉํด์ค๋ค. ๋ง์ ์ฐ์ฐ์, ๋บ์ ์ฐ์ฐ์์ ๋ํด์ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. [ ์ฆ๊ฐ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ] ์ฐ์ฐ..
2019.06.13 -
20. [C++] ํด๋์ค ์์๊ณผ ๋คํ์ฑ
1. ์ค๋ฒ๋ผ์ด๋ฉ (overriding) ๋ถ๋ชจ์ ๋ฉ์๋(๋ฉค๋ฒ ํจ์)๋ฅผ ์์ ํด๋์ค์๊ฒ ๋๊ฐ์ด ์์ฑํ๋ค. ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ฒด์ ๋ฐ๋ผ ์ฌ์ ์ ํ๋ค. (๋ชฉ์ - ํจ์ ์ฌ์ ์, ๋คํ์ฑ.) (์ค๋ฒ๋ก๋ฉ : ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์ธ์์ ๋ฐ๋ผ ์ฌ์ ์ ๋ชฉ์ - ํจ์ ์ฌ์ ์) ์ค๋ฒ๋ก๋ฉ ์ค๋ฒ๋ผ์ด๋ฉ ๋ฌธ ๋ฒ ํจ์ ๋ฌธ๋ฒ ํด๋์ค ๋ฌธ๋ฒ ํจ์ ๋ช ๊ฐ์์ผ ์ฌ์ ์ ๋ถ๋ชจ์ ๊ฒ๊ณผ ๊ฐ์์ผ ํ๋ค. ์ธ์ ํ์ ๋ฌ๋ผ์ผ ์ฌ์ ์ ๋ถ๋ชจ์ ๊ฒ๊ณผ ๊ฐ์์ผ ํ๋ค. ์ธ์ ๊ฐ์ ๋ฌ๋ผ์ผ ์ฌ์ ์ ๋ถ๋ชจ์ ๊ฒ๊ณผ ๊ฐ์์ผ ํ๋ค. ๋ฐํ ํ์ ์ฌ์ ์์ ์๋ฌด ์ฐ๊ด ์๋ค. ๋ถ๋ชจ์ ๊ฒ๊ณผ ๊ฐ์์ผ ํ๋ค. ๋ชฉ ์ ํจ์ ์ฌ์ ์์ ๋คํ์ฑ ๋ชฌ์คํฐ ํด๋์ค๋ฅผ ์ถ๊ฐํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์์๊ด๊ณ๋ฅผ ๊ตฌ์ฑํ์๋ค. ์ค๋ฒ๋ผ์ด๋ฉ์ ํตํด์ ๊ฐ ๊ฐ์ฒด๋ณ๋ก ๊ฐ์ ์ด๋ฆ์ ํจ์๊ฐ ์ฌ์ ์ ๋๋ค. (ํด๋์ค์ ๋คํ์ฑ : ๊ฐ๊ธฐ ๋ค๋ฅธ ..
2019.06.12 -
19. [C++] ํด๋์ค ์์
1. ์์ Aํด๋์ค(๋ถ๋ชจ ํด๋์ค)๊ฐ ๊ฐ์ง ๊ณตํต๋ ์์๋ฅผ ์ฌ๋ฌ ํด๋์ค(์์ ํด๋์ค)์๊ฒ ์ฌ์ฌ์ฉํ๋๋ก ๋ฌผ๋ ค์ค ์ ์๋ค. ๋ถ๋ชจ ํด๋์ค๋ ์์ ํด๋์ค๋ค์ ์ถ์์ ์ธ ์กด์ฌ๊ฐ ๋๋ค. (์์์ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ํ ๋ฌธ๋ฒ์ด๋ค.) ๋ถ๋ชจ ํด๋์ค == ๊ธฐ๋ณธ ํด๋์ค(Base Class) == ์์ ํด๋์ค == ์ํผ ํด๋์ค ์์ ํด๋์ค == ํ์ฅ ํด๋์ค(Derived Class) == ํ์ ํด๋์ค == ์๋ธ ํด๋ ์์์ ํํ์๋ public ์์, protected ์์, private ์์์ด ์๋ค. ๋ณดํต ๋ถ๋ชจ์ ๋ฉค๋ฒ ์ ๊ทผ์ ์ํด public ์์์ ๋ง์ด ์ฌ์ฉํ๋ค. CGameObject ํด๋์ค๋ฅผ CPlayer์ ์์์ํจ ๋ชจ์ต์ด๋ค. [ ์์ ๊ฐ์ฒด(CPlayer)์ ์์ฑ ๊ณผ์ ] ๋ฉ๋ชจ๋ฆฌ ํ ๋น -> ๋ถ๋ชจ ์์ฑ์ ํธ์ถ(CGameObjec..
2019.06.11