: ์๋์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ํด๊ฒฐ ์ฝ๋๋ฅผ ๋ง๋ค์ด๋ผ.
-> ์๋์ ์ฝ๋๊ฐ ๋ญ๊ฐ ์๋ชป๋ฌ๋์ง๋ฅผ ํ์
ํด๋ผ
: ๊ฐ์ฒด ๋ฉค๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , base๋ฅผ ์์ํ๊ณ ์์ ๋,
๊ฐ์ฒด ๋ฉค๋ฒ๋ฅผ base ์์ฑ์์ ์ธ์๋ก ๋ณด๋ด๊ณ ์ถ์ ๋,
์ด ๋, base ์์ฑ์๊ฐ ๋จผ์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋ฉค๋ฒ ๊ฐ์ฒด๋
์์์ผ๋ก ์ฌ์ฉํด์ผ๋ง ํจ.
์ด์ ์๊ฐ์ base ์์ฑ์๊ฐ ๋ฉค๋ฒ ๊ฐ์ฒด ์์ฑ์๋ณด๋ค ๋จผ์ ํธ์ถ๋จ์ ํ์ธํ๋ค.
-> ์๋ฅผ ๋ค์ด ์ด๋ฌํ ๊ฒฝ์ฐ ์๊ฐํ ์ ์๋ค.
๊ฒ์ ๋ค๊ณ ์๋ ํ์ด๋ก์ธ๋ฐ ํ์ด๋ก์ base๋ ์ ์ฌ๋ค.
๊ทธ๋ฐ๋ฐ ๊ฒ์ ๋ฅ๋ ฅ์น๋ฅผ base ์ ์ฌ ์์ฑ์์ ๋๊ฒจ์ผ ํ๋ค๋ฉด????
์ ๋ฆฌ 240801
: ์์๋ ํด๋์ค๊ฐ ํ์์ ์ํด ์๋ ๋ฉค๋ฒ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์์์ผ ํ ๋,
๋ฉค๋ฒ ๊ฐ์ฒด๋ฅผ ๊ฐ์ฅ ๋จผ์ ์์ํด์ , ๊ธฐ์กด์ ๊ธฐ๋ฐ ํด๋์ค์๋ค๊ฐ ๋ณด๋ด์ฃผ์.
: ์ด์ ๋ด์ฉ์์ ์์๊ณผ ๋ฉค๋ฒ๊ฐ ํจ๊ป ์กด์ฌํ ๊ฒฝ์ฐ, ๊ธฐ๋ฐ์ด ๋จผ์ ํธ์ถ๋จ์
ํ์ธํจ.
1) ์์
-> ์ธ์๋ฅผ ์ฐธ์กฐ๋ก ๋ฐ๋๋ก ์ต๊ดํํ์.
: ๋ฌด๊ธฐ๋ฅผ ์ฅ์ฐฉํด์ผ๋ง ํ๋ ์ ์ฌ๊ฐ ์๋ค๊ณ ํ์.
2) ์ด๋ด๋ฐ์ ๋ฉค๋ฒ๋ก ๊ฐ์ง๊ณ ์๊ฒ ํ๋ ๊ฒ์ด ๋์๊ฒ ๊ฐ์.
: warrior๋ฅผ ์์ํ๊ณ , ๋ฌด๊ธฐ๋ฅผ ๋ฉค๋ฒ๋ก ๊ฐ์ง๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด์.
๊ฒฐ๊ณผ : ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํจ.
์ค์!
- ์ ๋ฐ์ํ๊ฑฐ์ผ?!! : ์์ฑ์ ํธ์ถ ์์๋ ์ด๋ฏธ ์ ํด์ ธ ์์.
weaponOnWarrior ์์ฑ์์ ์ด๋์ ๋ผ์ด์ ์์ weapon aa๋ฅผ ๋จผ์ ์ด๊ธฐํํ๊ณ , ๊ธฐ๋ฐํด๋์ค๋ฅผ ์ด๊ธฐํํ๋ ์ฝ๋๊ฐ ์๋๋ฐ??????- ์ด์
: ๊ฐ ํด๋์ค๊ฐ ์ด๊ธฐํ๋๋ ์์๋ ์์ -> ๋ฉค๋ฒ ๊ฐ์ฒด ์์๋ค.
๋ฐ๋ผ์ ๊ธฐ๋ฐํด๋์ค์ธ warrior ํด๋์ค๊ฐ ๋จผ์ ์ด๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง๊ณ , weapon aa ๊ฐ์ฒด์ ์์ฑ์๊ฐ ํธ์ถ๋๊ธฐ ๋๋ฌธ์.
์์ ๊ฒฝ์ฐ์๋ ์์ฑ๋์ง๋ ์์ aa์ ๋ฉค๋ฒ๋ฅผ ์ ๊ทผํ๊ณ ์๊ธฐ ๋๋ฌธ์.
3) ํด๊ฒฐ ๋ฐฉ๋ฒ.
: weapon์ ๊ด๋ฆฌํ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ์ด ํด๋์ค๋ฅผ ๋จผ์ ์์ํ๋๋ก ํด์ผ ํจ.
์ฆ, ๋ค์ค ์์์ ์ฌ์ฉํจ.
์ด์ : ๋ค์ค์์์์ ๋จผ์ ์์ํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ weapontManager ํด๋์ค๊ฐ ๋จผ์ ์์นํ๊ธฐ ๋๋ฌธ์.
-> ๋ค์ค์์์ผ๋ก ํตํด์ weapon aa๋ฅผ warrior์ ์์ฑ์์ ์ธ์๋ก ๋๊ธธ์ ์๋ค!
protected๋ก ์ ๊ทผ์ ์ดํจ.
c++์์ iostream์ ๋ง๋ค๋, ์ด์ ์ ์ฌํ ๋ฌธ์ ๊ฐ ์์ด์
๋ค์ค์์์ ์ด๋ฃจ๊ณ ์๋ค๊ณ ํจ.
๋ค์ค ์์์ ํน์ง.
๋ค์ค ์์์์๋ ๋จผ์ ์์ฑํ ํด๋์ค์ ์์ฑ์๊ฐ ๋จผ์ ํธ์ถ๋จ.
์๋์ ์ค๋ช
์ ์ฝ๋๋ก ์์ฑํ๊ณ , ์ด๋ป๊ฒ ํด๊ฒฐํ ๊ฒ์ธ์ง ๊ตฌํํ์
: warrior ํด๋์ค์ weapon (๋ฉค๋ฒ๋ก string : ๋ฌด๊ธฐ ์ด๋ฆ) ํด๋์ค๋ฅผ ๋ง๋ค์.
:: warror ์์ฑ์๋ weapon ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ์์ ์ด๋ค ๋ฌด๊ธฐ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ผ.
::: weaponOnWarrior๋ฅผ ๋ง๋ค๊ณ , warrior๋ฅผ ์์ํ๊ณ , weapon์ ๋ฉค๋ฒ๋ก ๊ฐ์ง๊ณ ์์.
:::: ์ด๋ weaponOnWarrir์ ์์ฑ์์์ weapon ๋ฉค๋ฒ๋ฅผ warror์๊ฒ ์ธ์๋ก ๋๊ฒจ์ฃผ์!
์ฝ๋
- ์ด๋ป๊ฒ ๋ฐ๊ฟ ๊ฒ์ธ๊ฐ?
: ์ด๋ฏธ warrior๋ฅผ ์์ํ๊ณ ์์ผ๋ฏ๋ก, ๋ฉ๋ชจ๋ฆฌ ์์ผ๋ก weapon์ด ๋จผ์ ์์ผ ํจ.
-> ๋ค์ค ์์์ ํตํด ์ฒ๋ฆฌํด์ผ ํ ์ ๋ฐ์ ์๋ ์ํฉ์.
--> ์ฒ๋ฆฌํ๋ผ!!
: weapon ๊ฐ์ฒด๊ฐ ์๋ weapon ํด๋์ค๋ฅผ ๋ฉค๋ฒ๋ก ๊ฐ๋ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ,
์ด๋ฅผ ์ด์ฉํด์ผ ํจ!
์ด์ : ๊ฐ์ํจ์ ํฌ์ธํฐ์ ํ ์ด๋ธ์ ํ์ ์์ฑ์๊น์ง ์์ผ
ํ์์ชฝ์ ๊ฐ์ํจ์๋ค๋ก ์ค์ ์ด ๋จ.
๋ ๋ค๋ฅธ ์ด์ : ๊ธฐ๋ฐ ํด๋์ค์ ๋ฉค๋ฒ๋ค์ด ๋จผ์ ์ด๊ธฐํ๋ ํ, ํ์ํด๋์ค์ ๋ฉค๋ฒ๋ค์ด
์ด๊ธฐํ๋๋๋ฐ, ๋ง์ฝ ํ์ํด๋์ค์ ๊ฐ์ํจ์๊ฐ call๋๋ค๊ณ ํ๋ค๋ฉด, vTable์์ ์ง์ ๋์ง ์์,์ด๊ธฐํ๋์ง ์์
๊ธฐ๋ฐํด๋์ค์ ๋ฉค๋ฒ๋ค์ด ์ฌ์ฉ๋ ์ ์์.
-> ์๋ ์ฝ๋๊ฐ ํด๋นํ๋ ์์ ์ฝ๋์.
https://github.com/codenuri/CPPINTERMEDIATE/blob/master/106_CONSTRUCTOR/ctor8.cpp