21. [C++] ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ
C++์์๋ ํจ์ ๋ฟ๋ง ์๋๋ผ ์ฐ์ฐ์๋ ์ค๋ฒ๋ก๋ฉ์ด ๊ฐ๋ฅํ๋ค.
์ฌ์ฉ์๊ฐ ๊ธฐ์กด์ ์ฐ์ฐ์๋ฅผ ์ฌ์ ์ํ๋ ํด๋์ค ๋ฌธ๋ฒ์ด๋ค.
์๋ก์ด ์ฐ์ฐ์๋ฅผ ์ฐฝ์กฐํ๋ ๋ฌธ๋ฒ์ ์๋๋ค.
๊ธฐ์กด ์ฐ์ฐ์์ ๋ณธ์ง์ ํ๋ ค์ ์๋๋ค.
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ๋ฐฉ๋ฒ์๋ ๋ค์ ๋ ๊ฐ์ง๊ฐ ์๋ค.
1. ๋ฉค๋ฒํจ์์ ์ํ ๋ฐฉ๋ฒ
2. ์ ์ญํจ์์ ์ํ ๋ฐฉ๋ฒ.
๋ฉค๋ฒ ํจ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ฒ๋ก๋ฉ๋ ํจ์๊ฐ ์ ์ญํจ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ฒ๋ก๋ฉ๋ ํจ์๋ณด๋ค ์ฐ์ ์ ํธ์ถ๋๋ค.
[ 1. ๋ฉค๋ฒ ํจ์์ ์ํ ๋ฐฉ๋ฒ ]
'operator' ํค์๋์ '์ฐ์ฐ์'๋ฅผ ๋ฌถ์ด์ ํจ์์ ์ด๋ฆ์ ์ ์ํ๋ฉด,
ํจ์์ ์ด๋ฆ์ ์ด์ฉํ ํจ์ ํธ์ถ ๋ฟ๋ง ์๋๋ผ, ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ํจ์์ ํธ์ถ๋ ํ์ฉํด์ค๋ค.
๋ง์ ์ฐ์ฐ์, ๋บ์ ์ฐ์ฐ์์ ๋ํด์ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
[ ์ฆ๊ฐ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ]
์ฐ์ฐ๋์ด ๋ ์ ์ ์ ์ ์ฆ๊ฐ์ด ๋ฏธ์ธํ์ง๋ง ์๋๊ฐ ๋ ๋น ๋ฅด๋ค.
[ 2. ์ ์ญ ํจ์์ ์ํ ๋ฐฉ๋ฒ ]
value ์ ๊ฐ์ฒด์ ๋ํ ์ ์ญ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ.
๋งค๊ฐ๋ณ์ ์ค ํ๋๋ ๋ฐ๋์ ๊ฐ์ฒด ํ์ ์ด๊ฑฐ๋, ๊ฐ์ฒด์ ๋ ํผ๋ฐ์ค ํ์ ์ด์ด์ผ ํ๋ค.
[ ์ค๋ฒ๋ก๋ฉ์ด ๋ถ๊ฐ๋ฅํ ์ฐ์ฐ์์ ์ข ๋ฅ ]
. (๋ฉค๋ฒ ์ ๊ทผ ์ฐ์ฐ์)
.* (๋ฉค๋ฒ ํฌ์ธํฐ ์ฐ์ฐ์)
:: (๋ฒ์ ์ง์ ์ฐ์ฐ์)
?: (์กฐ๊ฑด ์ฐ์ฐ์ - 3ํญ ์ฐ์ฐ์)
sizeof (๋ฐ์ดํธ ๋จ์ ํฌ๊ธฐ ์ฐ์ฐ์)
typeid (RTTI ๊ด๋ จ ์ฐ์ฐ์)
(ํ๋ณํ ์ฐ์ฐ์)
static_cast
dynamic_cast
const_cast
reinterpret_cast
[ ๋ฉค๋ฒ ํจ์ ๊ธฐ๋ฐ์ผ๋ก๋ง ์ค๋ฒ๋ก๋ฉ์ด ๊ฐ๋ฅํ ์ฐ์ฐ์ ]
= (๋์ ์ฐ์ฐ์)
() (ํจ์ ํธ์ถ ์ฐ์ฐ์)
[] (๋ฐฐ์ด ์ ๊ทผ ์ฐ์ฐ์. ์ธ๋ฑ์ค ์ฐ์ฐ์)
-> (๋ฉค๋ฒ ์ ๊ทผ์ ์ํ ํฌ์ธํฐ ์ฐ์ฐ์)
[ ์ฐ์ฐ์๋ฅผ ์ค๋ฒ๋ก๋ฉ ํ๋๋ฐ ์์ด์์ ์ฃผ์์ฌํญ ]
1. ๋ณธ๋์ ์๋๋ฅผ ๋ฒ์ด๋ ํํ์ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ์ข์ง ์๋ค.
2. ์ฐ์ฐ์์ ์ฐ์ ์์์ ๊ฒฐํฉ์ฑ์ ๋ฐ๋์ง ์๋๋ค.
3. ๋งค๊ฐ๋ณ์์ ๋ํดํธ ๊ฐ ์ค์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
4. ์ฐ์ฐ์์ ์์ ๊ธฐ๋ฅ๊น์ง ๋นผ์์ ์๋ ์๋ค.