์ด๊ฑฐ ์คํํ๋ฉด
7 7 7
7 8 7
์ด ๋์ค๋๋ฐ, ๋ด ์๊ฐ์
7 7 7
7 8 8
์ด ๋์์ผ๋๋๊ฒ ์๋๊ฐ ์ถ์...
n3 ์์ ref๋ฅผ ๋ถ์ด๋ฉด ํด๊ฒฐ๋๋๊ฑด ์๋๋ฐ ์ด๊ฒ ์ ๊ทธ๋ฐ๊ฑฐ์??
n3๋ n2์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋๊ฒ ์๋๋ผ
n1์ด ๊ฐ๋ฆฌํค๊ณ ์๋ ์ด๋ค ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋๊ฑด๊ฐ?
์ฐธ๊ณ ๋ก ๋์ค์ด์ ๋ธ๋ฆฌ๋ ์ด๋ฌํจ...n3๋ n2 ์ฃผ์๋ฅผ ๊ฐ๊ณ ์๋๊ฑฐ ๋ง์ง์๋??
class ์ง์ฐ๊ณ struct ์จ๋ณด์
struct๋ ๊ฐํ์์ธ๋ฐ ๋๋์ฑ ๊ฐ๋ฅ์ฑ ์์ง์๋? ์ค์ ๋ก struct๋ก ๋ฐ๊ฟ๋ 787๋์ด...
์ ๋ ธ๋๋ฅผ ์๋กญ๊ฒ ๋ง๋ค์๊ตฌ๋ n2.data = 8๋ก ๋ฐ๋๊ฑฐ๋ ์ฐฉ๊ฐํจ
๋์ ์ฐ์ฐ์๋ฅผ ์ธ ์์ ์ ๋ค๊ณ ์๋๊ฑธ ๋์ ํ๊ฒ ์ง.
Node๋ ์ฐธ์กฐํ์์ด๋ผ n3์ n2๋ฅผ ๋์ ํ๋ฉด n2์ ์ฃผ์๋ฅผ ๊ฐ๊ณ ์์๊ฑฐ๋ผ ์๊ฐํ๋๋ฐ, ref๋ฅผ ๋ถ์ฌ์ผ Node**์ฒ๋ผ ์๋ํ๋๊ฑด๊ฐ?
n2๋ฅผ ๋ค์ ์ ์ธํ๊ฑด ์๋๋ผ n2 ์์ฒด์ ์ฃผ์๋ ์๋ฐ๋ํ ๊ณ
c#์์ ๊ทธ๋ฅ ๋ชจ๋ ํด๋์ค ๋ณ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฏธ ํฌ์ธํฐ ํ๋๊ฐ ๋ฌ๋ ค์๋ค ์๊ฐํ๋ฉด ๋ ๋ฏ? c++์์๋ Node ๋์ Node*์ผ๋ก ๋ฐ์ดํฐํ์ ์นํํด์ ํ ์คํธ ํด๋ณด๋ฉด ๋ง์ฐฌ๊ฐ์ง๋ก 787 ๋์ฌ๊ฒ ๊ฐ์๋ฐ
๊ทธ๋ ๋ค...๊ทธ๋ฅ ๊ฐ๊ฐ์ Node*๋ผ๊ณ ์๊ฐํ๋ฉด ๋น์ฐํ ๊ฑฐ์๋คใณใณ
๊ทธ ๋ญ์ง ๊ทธ๋ฅ ์ฐธ์กฐ๋ฅผ ์ํ๋๊ฑธ๋ก ์. ๋์ ๋งค๊ฐ๋ณ์๋ ์ฐธ์กฐํ๋๊ฑฐ ๊ฐ๋๋ฐ - dc App
๋์ถฉ n2 = n1ํ๋ฉด n1์ด ๊ฐ๋ฆฌํค๋ ๋ฌด์ธ๊ฐ๊ฐ ์๋๋ผ n1์ด ๊ฐ๋ฆฌํค๋ node 7 ์์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค ๋ณด๋ฉด ๋จ n3 = n2๋ ๊ทธ๋ฌ๋ n2๋ฅผ ๋ฐ๊พธ์ด๋ n3์ ์๋ ๊ฐ๋ฆฌํค๋ node 7 ๊ฐ๋ฆฌํค๋ ๊ฑฐ๊ณ
์ฒ์์ n1 n2 n3์ด ํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ณ , ๋๋ฒ์งธ์ n2๋ง ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๊ฑ๋ฅผ ์ฐธ์กฐํ๊ฒ ํ์ผ๋ 787์ด ๋ง์. C++์ ๋์ ํด์ ์ดํดํ์ง ๋ง๊ณ C# ๊ทธ๋๋ก๋ฅผ ์ดํดํ๋๊ฒ ์ข์๊ฑฐ์
class๋ ์ ๋ถ shallow copy๋ฅผ ํจ. deep copy๋ผ๋ ๊ฐ๋ ์ด... ๊ทธ๋ฅ ์ฐ๋ฉด ์์ struct๋ deep copy๋ฅผ ํจ. class๋ heap์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ ๋น๋จ struct๋ stack์ ํ ๋น๋จ
๊ธ์ ๋ค์ ๋ณด๋๊น ์ ๊ธฐํ๋ค ๋ด๊ฐ ์ ๋๋ก ์ฝ์ง ์์๊ตฐ ํ๋ ๋ฐฐ์๊ฐ๋ค ๊ฐ์ฌ
์.. ๋ ๋ค์ ๋ณด๋๊น ๋ด๊ฐ ์ฒ์์ ์๊ฐํ ๊ฒ ๋ง๊ตฌ๋ง
c,c++์ผ๋ก ํ๋ฉด ์ ๊ฑด ํฌ์ธํฐ๋ณ์์ธ๊ฑฐ๊ณ , ๊ทธ๊ฑฐ๋๋ก์ดํดํ๋ฉด 787์ด ๋ง์. ์๊ทธ๋ฐ๊ฑด์ง๋ ์ข๋ ๊ณต๋ถํด๋ณด๋ฉด ์๊ฑฐ์
๋ณ์ ๊ฐ๊ฐ์ด (์ค๋งํธ)ํฌ์ธํฐ๋ผ ๋ณด๋ฉด ํธํจ
์ฒ์์ ๋ฐ์๊ฑด n2์ ์ฐธ์กฐ๋ ํฌ์ธํฐ๊ฐ ์๋๋ผ n2์ ๋ค์ด์๋ 'Node1์ ์ฃผ์'๋ฅผ ๋ฐ์๊ฑฐ๋ n3 = n2; ํ ํ์ n2์ ๋ญ ๋์ ํด๋ ์ด๋ฏธ 'Node1์ ์ฃผ์'๊ฐ ๋ค์ด์๋ n3์ ์ํฅ์ ์๊ฐ. ๋ฐ๋๋ก ref๋ฅผ ์ฐ๋ฉด ๊ทธ ๊ฐ์ ๋ฐ๋๊ฒ ์๋๋ผ ๊ทธ ๋ณ์์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค๊ฐ ์ฐธ์กฐํ๋ ์ฌ์ค์ ๋์ด ๋์ผํ ์ฃผ์๋ฅผ ๊ณต์ ํ๋ ๋ณ์๊ฐ ๋จ.
๋๋ ๋จผ๊ฐ ์๋ชป์๊ณ ์๋๊ฑฐ๊ฐ์๋
์ฅ ๋ค์ ref๋ ๊ธ์์์ ํ๋๋ฌธ์ ์ข ์ค์ด๊ธดํ๋๋ฐ ์์ ๋ด๊ฐ ๋ญ ์๋ชป์๊ณ ์์?
๋๊ธ ๊ฐ๋ง์ด๋ฌ๋ ธ๋คใทใท ์ง๊ธ ํ๋ํ๋ ์ฝ์ด๋ณด๋ฉด์ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์๋ค ๋ค๋ค ๊ฐ์ฌ
Node๋ผ๋ ์ฐธ์กฐ ๋ณ์๋ฅผ ์ฐธ์กฐํ๋๊ฒ ์๋๋ผ new๋ก ๋์ ํ ๋น๋ ๊ฐ์ ์ฐธ์กฐ๋๋๊ฑฐ์ node๋ ๊ทธ๋ฅ ์ฐธ์กฐ๋ง ํ๋๋ณ์์, n2๋ฅผ ๋์ ํ๋ค๊ณ n2๋ฅผ ์ฐธ์กฐํ๋๊ฒ ์๋๋ผ ๋์ ๋น์ n2๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ ์ฐธ์กฐํจ
Node ์๋ฃํ์ ์ค์ ํด๋์ค ๋ด๋ถ๊ตฌ์กฐ์ ์๋ฌด ๊ด๊ณ์๊ณ ๊ทธ๋ฅ 4byte ํฌ๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ผ ๋ณด๋ฉด ํธํจ ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ณ์์๋ค ๊ทธ๋ฅ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ง ๋์ ํ๋๊ฑฐ์ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๊ฐ 4byte๋๊น , new Node() ๋ฅผ ํ ๋ ๋น๋ก์ ์ค์ node๋ด๋ถ๊ตฌ์กฐ์ ์ฉ๋๋งํผ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ํ ๋นํ๊ณ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ฃผ์ ๊ฐ์ ๋ฆฌํดํจ , Node ๋ณ์๋ ๊ทธ๋ฅ 4byte ๋ฉ๋ชจ๋ฆฌ์ฃผ์๊ฐ์ ๋ฐ๋๊ฑฐ๊ณ
์ด๊ฒ C์ ํฌ์ธํฐ๊ฐ๋ ์
์ฐธ์กฐ ๋ณด๋ค๋ ํฌ์ธํฐ๋ก ์ดํดํ๋ ๊ฒ ์ข์๊ฑฐ ๊ฐ์๋
๊ทธ๋ฌ๊ฒ...๋๋ฌด ์ฐธ์กฐ๋ผ๋ ๋จ์ด์ ์ฝ๋งค์ฌ์๋๊ฑฐ ๊ฐ์
์ธ์คํด์ค์ ๋ํ ๊ฐ๋ ์ ์ข ๋ช ํํ ํด์ผํ ๋ฏ