ํจ์ ์ธ๋ ์ธ์์๋ค ref ๋ถ์ฌ์ ๋ฃ์ผ๋ฉด ํฌ์ํฐ๊ฐ ๋์ด๊ฐ๋ค๊ณ ์ดํดํด์ผ ํ๋์์๋๋ฉด ํฌ์ธํฐ์ค๋ฌ์ด ์ถ์์ ์ธ ๋ญ๊ฐ๊ฐ ๋์ด๊ฐ๋
๋ ๊ฐ์ด ๋ค์ด๊ฐ์ง ์๋ ํฌ์ธํฐ
ํ ...ํ ๋ฏธ
์ธ์๋ก ๋ค์ด๊ฐ๋ ๋ณ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ผ๊ณ ํ๋ฉด ์ดํด๊ฐ ์ฌ์ฐ๋ ค๋. ์๋ฅผ๋ค์ด ๋ณ์ ํ์ ์ด ํฌ์ธํฐ๋ฉด ํฌ์ธํฐ์ ํฌ์ธํฐ.
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
Ref out ์ด๋ฐ๊ฑธ ๋ญ๋ผ๊ณ ๋ถ๋ฌ์?
Msdn ๋ค๊ฐ๋ณด๋ ๊ทธ๋ฅ ๋งค๊ฐ๋ณ์๋ผ๋๊ฑฐ๊ฐ๊ธฐ๋ํ๊ณ
๊ฐ์ ์ํ ํธ์ถ ๋งค๊ฒ๋ณ์๋ฅผ ๋ณต์ฌํด์ ๊ฐ์ง๊ณ ์ด
ํต๋ณต์ฌ,ํฌ์ธํฐ์ ๋ฌ, ์ฝ๋ฐ์ด ๋ฐ๋ฅ, ์ฝ๋ฐ์ด ๋ ํผ๋ฐ์ค, C#์ ๊ตฌ์กฐ์ฒด๋ int float ์ด๋ฐ๊ฑฐ ๋ค ์ฝ๋ฐ์ด ๋ฐ๋ฅ์,ํด๋์ค๋ ์ ๋ถ ์ฝ๋ฐ์ด ๋ ํผ๋ฐ์ค์. ์ฝ๋ฉํ๋ค๋ณด๋ฉด ๋ฆฌํด๊ฐ ํ๋๋ก ํด๊ฒฐ ๋ชป๋ณด๋ ์ผ์ด์ค๊ฐ ์์, ๋ํ์ ์ผ๋ก ์ ๋ํฐ์ ๋ ์ด์บ์คํธ. ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ด, ๋ ์ด์ ๋ง์๋์ง ์ ๋ฌด,๋ง์๋ค๋ฉด ๋ง์ ๋ ์๋ค์ ๋ฐฐ์ด, ๋๊ฐ์ง๊ฐ ํ์ํ๊ฑฐ์ง ์ด๋ด๋ ์ ๋ฌด๋ฅผ bool return์ผ๋ก,๋ง์ ๋ ์๋ค์ ๋ฐฐ์ด์ ์ธ์๊ฐ Out ํค์๋๋ก ์ ๋ฌํจ. ref๋ ๋ฐ์์ ํจ์ ์์ผ๋ก ๋ค์ด์ฌ๋ ์ฝ๋ฐ์ด ๋ ํผ๋ฐ์ค ์์ผ์ฃผ๋๊ฑฐ out์ ํจ์ ์์์ ๋ฐ์ผ๋ก ๋๊ฐ๋ ์ฝ๋ฐ์ด ๋ ํผ๋ฐ์ค ์์ผ์ฃผ๋๊ฑฐ
์กฐ๊ธ ๊ทน๋จ์ ์ผ๋ก(?) ์๋ฅผ ๋ค์ด์ ๋๊ฐ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ํจ์์ ๋ฃ์ด์ ์ฒ๋ฆฌํ๊ณ ์ถ์. ๊ทธ ๋ ํ๋ผ๋ฏธํฐ๋ก ์ด๋ฏธ์ง๋ฅผ ๋๊ฒจ์ค์ผ ํ์์? ์ด ๋ ๊ฐ์ ์ํ ํธ์ถ์ ์ค์ ์ด๋ฏธ์ง์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ณต์ฌํ์ฌ ๋ฃ์ด์ฃผ๋ ์ฐ์ฐ์ ํจ. (์๊ฐ์ด ์์ฒญ ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ์ง) ์ฃผ์์ ์ํ ํธ์ถ์ ์ฃผ์๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ์ฃผ๊ณ ํฌ์ธํฐ๋ก ๋ฐ์์ ๊ทธ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ฐพ์๊ฐ์ ์ฐ์ฐํ๋ ๋ฐฉ์์. ์ด๋ฏธ์ง๋ฅผ ๋ณต์ฌํ ํ์๊ฐ ์์ผ๋ ์๊ฐ์ด ์์ฒญ ์ ์ฝ๋๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ๋ญ๋น๋์ง ์๊ฒ ์ง. ์ฐธ์กฐ์ ์ํ ํธ์ถ์ C++ ์ด์์์ ์ฐธ์กฐ๋ผ๋ ๊ฐ๋ ์ ์๋ฏธํ๋ ๊ฑด๋ฐ ์ผ์ข ์ ๊ฐ์ํ๋ ํฌ์ธํฐ์ ๊ฐ๋ค๊ณ ๋ณด๋ฉด ๋จ. ์ฐธ์กฐ์ ์ํ ํธ์ถ์ ํจ์์ ๊ฐ์ ๋๊ฒจ์ฃผ๋ ๊ฒ ๊ฐ์ง๋ง ์ค์ ๋ก๋ ์ฐธ์กฐ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ ํฌ์ธํฐ๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ์
์ผ๋ฐ์ ์ธ ์ ์ํ ๋ณ์๋ก ์๋ฅผ ๋ค๋ฉด, int a =5; int b=10์ผ ๋ foo(int a, int b){return (a + b);}๋ผ๊ณ ํจ์๋ฅผ ์ ์ธํ๊ณ foo(a,b);๋ผ๊ณ ํธ์ถํ๋ฉด ๊ฐ์ ์ํ ํธ์ถ์. (๊ฐ์ ๋๊ฒจ์คฌ์ผ๋๊น) foo(int* a, int* b){return (*a + *b);}๋ผ๊ณ ํจ์๋ฅผ ์ ์ธํ๊ณ foo(&a,&b);๋ผ๊ณ ํธ์ถํ๋ฉด ์ฃผ์์ ์ํ ํธ์ถ์. (์ฃผ์๊ฐ์ ๋๊ฒจ์คฌ์ผ๋๊น) foo(int& a, int& b){return (a + b);}๋ผ๊ณ ํจ์๋ฅผ ์ ์ธํ๊ณ foo(a,b);๋ผ๊ณ ํธ์ถํ๋ฉด ์ฐธ์กฐ์ ์ํ ํธ์ถ์. (๊ฐ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก ์ฐธ์กฐ ๋ฌธ๋ฒ์ผ๋ก ๋๊ฒจ์คฌ์ผ๋๊น)