๊ธฐํธ *์ & ์ ๋ฆฌํ๊ธฐ
ํ๋ก๊ทธ๋๋ฐ ์ด๋ณด์ธ ๋์๊ฒ ๊ฐ์ฅ ์ ์ ๋ชธ์ง์ผ๋ก ๊ฐ์ฅ ํฐ ํผ๋์ ์ฃผ๋ ์น๊ตฌ๊ฐ ๊ธฐํธย โ*โ์ โ&โ๋ค. ์์ผ๋ก ๋ ๋ค์ํ ์ฐ์์๋ฅผ ๋ฐฐ์ฐ๊ฒ ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก๋ ํฌ์ธํฐ์ ๊ด๋ จ๋ ๊ธฐํธ๋ค์ด์ง๋ง, ์ง๊ธ๊น์ง *, &์ ์ฐ์์ ๋ํด ๋ฐฐ์ด ๋ฐ๋ฅผ ํ ๋ฒ ์ ๋ฆฌํ๊ณ ๋์ด๊ฐ๋ ํธ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
๋ค์ค ์ฃผ์ /**/: ์๋ฐํ๋ * ํผ์ ์ฐ์ด๋ ๊ฒ์ด ์๋๊ณ , ๊ทธ๋์ ํท๊ฐ๋ฆด ์ผ์ด ์๋ ์ฉ๋ฒ์ด์ง๋ง ์ ๋ฆฌํ๋ ๊น์ ๊ฐ์ด!
ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ ๋ (์๋ฃํ) *(ํฌ์ธํฐ๋ณ์๋ช
)=(์ฃผ์๊ฐ); ์ด๋ฐ ์์ผ๋ก ์ ์ธํ๋ค. ๊ตณ์ด ์ฃผ์๊ฐ ๋ถ๋ถ์ & ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒ์, ์ด๊ธฐํํ๋ ์๋ฆฌ์ ์ฃผ์๊ฐ์ ๊ฐ์ง ํฌ์ธํฐ๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ๋ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ. ์๋ฃํ ๋ณ๋ก ์ ์ฅ๋๋ ์์น๊ฐ ๋ฌ๋ผ ์๋ฃํ ๋ณ ํฌ์ธํฐ๊ฐ ๋ฐ๋ก ์๋ค๋ ์ ๋ ๋ค์ ํ๊ธฐ!
ํฌ์ธํฐ ์ ์ธ์, ํจ์์์์ ํ์ฉ: ํจ์์ ๋งค๊ฐ๋ณ์๋ ํจ์ ์์ ๋ค์ด๊ฐ๋ฉด์ ์ด๊ธฐํ๋๋ค๋ ์ ์ ์ด์ฉํด, ํ๋กํ ํ์
์ ํฌ์ธํฐ ํ์ผ๋ก ์ค์ ํด ๋๊ณ ์ธ๋ถ ๋ณ์๋ฅผ ์ฃผ์๊ฐ์ ๋์
ํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ํจ์์ ๋งค๊ฐ๋ณ์๊ฐ ํฌ์ธํฐ ๋ณ์๋ก ์ ์ธ๋๋ค.
ํฌ์ธํฐ๊ฐ ์ง์ํ๋ ์ฃผ์์ ์์นํ ๋ฐ์ดํฐ
์ด๋ฏธ ํฌ์ธํฐ ๋ณ์ p๊ฐ ์ ์ธ๋์๋ค๊ณ ํ ๋, *p๋ p๊ฐ ์ง์ํ๋ ์ฃผ์์ ์์นํ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค.
ํด๋์ค์์์ ์ฐจ์ด, ->: ํด๋์ค์ ์ฃผ์๋ฅผ ์ง์ํ๋ ํด๋์ค ํฌ์ธํฐ์ธ ๊ฒฝ์ฐ(p๋ก ๊ฐ์ ), ๊ทธ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํด๋์ค ์์ฒด์ ๊ฐ์ *p๋ก ํ์ํ๊ฒ ์ง๋ง, ๊ทธ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํด๋์ค ๋ด์ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ฆฌํฌ ๊ฒฝ์ฐ์๋ p->member ์ด๋ฐ ์์ผ๋ก ํํํ๋ค.
*Class.pointer: ์ด๋ ๊ฒ ํด๋์ค ๋จ์์์๋ ํฌ์ธํฐ๊ฐ ์๋์ง๋ง ๊ทธ ๋ฉค๋ฒ๊ฐ ํฌ์ธํฐ์ธ ๊ฒฝ์ฐ์๋ *์ .๋ฅผ ๋ณํํด์ ์ฐ๋ฉด ๋๋ค. ์ด์ฐจํผ .์ ์ฐ์ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๋ค.
const *p ๋ผ๊ณ ์ ์ธํ๋ ๊ฒฝ์ฐ: *p, ์ฆ p๊ฐ ์ง์ํ๋ ์ฃผ์์ ์๋ ๋ณ์๋ฅผ ์์๋ก ๋ณด๊ฒ ๋ค๋ ์๋ฏธ
* const p ๋ผ๊ณ ์ ์ธํ๋ ๊ฒฝ์ฐ: p๋ผ๋ ํฌ์ธํฐ๋ณ์๋ฅผ ์์๋ก ๋ณด๊ฒ ๋ค๋ ์๋ฏธ
const * const p ๋ผ๊ณ ์ ์ธํ๋ ๊ฒฝ์ฐ: ๋ ๋ชจ๋๋ฅผ ์์๋ก ๋ณด๊ฒ ๋ค๋ ์๋ฏธ
๋์ ํ ๋น: ๋์ ํ ๋น์ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌ์ธํฐ, ์ฆ ์ฃผ์๋ฅผ ํตํด์ ์ด๋ฃจ์ด์ง๋ ๋ฏ ํ๋ค. ํ์์ (์๋ฃํ) *(ํฌ์ธํฐ๋ณ์๋ช
)=new (์๋ฃํ);
typedef์์ ํ์ฉ: typedef ์๋ณธ์๋ฃํ *๋ณ์นญ; ์ด๋ฐ ์์ผ๋ก ๋ณ์นญ์ ๋ง๋ค์ด๋ฒ๋ฆฌ๋ฉด ์ด ๋ณ์นญ์ ์ด์ฉํด ํฌ์ธํฐ๋ฅผ ์ผ๋ฐ์ ์ธ ์๋ฃํ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋๊น ๊ตฌ์กฐ์ฒด/ํด๋์ค๋ฅผ ์ธ ๋ ๊ตฌ์กฐ์ฒด/ํด๋์ค ํฌ์ธํฐ ํจ์๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ(์ฐ๊ฒฐ ๋ฆฌ์คํธ์์์ ๋
ธ๋๋ฅผ ์๊ฐํ์) ๊ทธ๋ ์ผ์ผ์ด *๋ฅผ ๋ถ์ด๊ธฐ๋ณด๋ค typedef๋ก ์ผ๋ฐํ๋ฅผ ํด ๋ฒ๋ฆด ์ ์๋ค๋ ์ด์ผ๊ธฐ.
๊ณฑ์
์ฐ์ฐ์: ์์ ๋ปํ๋ค. ๊ณฑ์
์ ์ํจ๋ค๋ ์๋ฏธ์ ์ฐ์ฐ์๋ค!
๋ณตํฉ๋์
์ฐ์ฐ์ *=: ์ฐ๋ณ์ ํญ์ ์ข๋ณ ํญ์ ๊ณฑํ ๋ค์ ๊ทธ ๊ฐ์ ์ข๋ณ ๋ณ์์ ๋์
ํ๊ฒ ๋ค๋ ์๋ฏธ
๋ณ์์ ์ฃผ์๊ฐ: ๋ณ์ ์์ &๋ฅผ ๋ถ์ผ ๊ฒฝ์ฐ ๊ทธ ๋ณ์์ ์ฃผ์๊ฐ์ ์๋ฏธํ๋ค. ํ์ง๋ง ์ฒ์ ์ ์ธํ ๋ ์ข๋ณ์ &๋ฅผ ์ด๋ค๊ณ ๋ณ์์ ์ฃผ์๊ฐ์ ์๋ฏธํ๊ฒ ๋์ง๋ ์๋๋ค. ์๋ํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฃผ์๊ฐ์ lvalue๊ฐ ๋ ์ ์๊ธฐ๋ ํ๊ณ , ๋ฌด์๋ณด๋ค
์ฐธ์กฐ๋ณ์์ ์ ์ธ: (์๋ฃํ) &(์ฐธ์กฐ๋ณ์๋ช
)=(์๋ณ์); ์ด๋ฐ ์์ผ๋ก ์ ์ธํ ๊ฒฝ์ฐ ์ด ์ฐธ์กฐ๋ณ์๋ช
์ ์๋ณ์์ ์ฐธ์กฐ๋ณ์๊ฐ ๋๋ค. ๋งค๊ฐ๋ณ์๋ก ๋์
๋ ์ธ๋ถ ๋ณ์์ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ํด ๊ณ ์๋ ๊ฒ์ด๋ผ๊ณ ํ๋ค. ํฌ์ธํฐ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ํจ์์ ๋ค์ด๊ฐ ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธ์ด๊ธฐํํด์ค๋ค๋ ์ ์ ์ด์ฉํ๋ค. ๊ทธ๋ฅ (๋งค๊ฐ๋ณ์)=(์ธ๋ถ๋ณ์) ์ด๋ ๊ฒ ๋๋ฒ๋ฆฌ๋ฉด ๊ฐ์ ๋์
์ด ๋์ง๋ง, &(๋งค๊ฐ๋ณ์)=(์ธ๋ถ๋ณ์) ์ด๋ ๊ฒ ๋๋ฒ๋ฆฌ๋ฉด ์ ์ฒด์ฑ(ใ
ใ
) ์์ฒด๊ฐ ๋๊ธฐํ๋์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ.
ํ์ฉ1: ํด๋์ค์ ๋ณต์ฌ ์์ฑ์๋ฅผ ์ฌ์ ์ํ ๋, ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ ์ข
๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ฌดํ๋ฃจํ๋ฅผ ํ์ง ์์ผ๋ ค๋ฉด &๋ก ๋งค๊ฐ๋ณ์์ ์ธ๋ถ๋ณ์๋ฅผ ๋๊ธฐํ์์ผ์ค์ผ ํ๋ค.
ํ์ฉ2: ๋์
์ฐ์ฐ์=๋ฅผ ์ค๋ฒ๋ก๋ฉํ ๋, = ์ฐ์ฐ์์ ์๋ ์ฑ์ง์ธย โ์๊ธฐ ์์ ์ ๋ฐํํ๋คโ๋ ์ ์ ์ ์งํ๋ ค๋ฉด, ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ์ฐ์์ ๋ฐํ ์๋ฃํ์ &๋ฅผ ๋ถ์ฌ ๋๊ธฐํ๋ฅผ ์์ผ์ค์ผ ํ๋ค.
๋นํธ ์ฐ์ฐ์ &: ์ ์์ ๋นํธ๋ฅผ ๊ฐ ์๋ฆฌ๋ผ๋ฆฌ ๋น๊ตํด์, ๋ ๋ค 1์ผ ๊ฒฝ์ฐ 1, ๋ ์ค ํ๋๋ผ๋ 1์ด ์๋ ๊ฒฝ์ฐ 0์ผ๋ก ์ฐ์ฐํ๊ฒ๋ ํ๋ ์ฐ์ฐ์
๋ณตํฉ ๋์
์ฐ์ฐ์ &=: ์ข๋ณ๊ณผ ์ฐ๋ณ์ & ๋นํธ ์ฐ์ฐํ ๋ค์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ฒ ํ๋ ๋ณตํฉ ๋์
์ฐ์ฐ์
๋
ผ๋ฆฌ ์ฐ์ฐ์ &&: ์์ชฝ์ ๋
ผ๋ฆฌ๊ฐ ๋ชจ๋ ์ฐธ์ด์ด์ผ ์ฐธ์ ๋ฐํํ๊ณ , ๋ ์ค ํ๋๋ผ๋ ๊ฑฐ์ง์ด๋ผ๋ฉด ๊ฑฐ์ง์ ๋ฐํํ๋ ๋
ผ๋ฆฌ ์ฐ์ฐ์