Overloading
๊ฐ์ ํจ์์ด๋ฆ, ํน์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด์, ํ๋ ์ด์์ ์ ์๊ฐ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด๋ค.
Function Overloading
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ๊ณผ ๋ฐฉ์์ด ๋์ผํ๋ค. ๋ฐ์์ ์๋ฅผ ๋ ๊ฒ์ ๋ณด๊ณ ์ดํดํด๋ณด์.
Operator Overloading
4, 6
์ด ์ฐ์ฐ์๋, Point ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๊ณ โ+โ operator ์ ๋ํด์, ์ค๋ฅธ์ชฝ์ Point ๋ณ์๋ฅผ reference๋ก ๋ฐ๋๋ค.
๋ฐ์ Point ๊ฐ์ฒด์ ๋ํด, result ๋ผ๋ Point ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ์ด๊ธฐ๊ฐ์ pt1์ ๋ฉค๋ฒ๋ณ์ x์ ๋์ค์ ๋์จ pt2์ x๋ฅผ ๋ํ ๊ฐ์ result์ ๋ฉค๋ฒ๋ณ์ x๋ก ํ ๋นํ๋ค.
๊ฐ์ ์๋ฆฌ๋ก result์ ๋ฉค๋ฒ๋ณ์ y๋ ํ ๋นํ๋ค. ๊ทธ๋ฆฌ๊ณ Point ๊ฐ์ฒด result๋ฅผ ๋ฐํํ๋ค.
์ธ๋ถ์์ ์ ์ํ operator overloading
ํด๋์ค ๋ด๋ถ์์ ๋ชจ๋ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ํ๊ธฐ ํ๋ค ์ ์๋ค. ์๋ํ๋ฉด, ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํด๋์ค ๋ด๋ถ์์ ์ ์ํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ์ง์ ๋ถํด์ง๊ณ , ์์กด์ฑ์ด ์๊ธธ ์ ์๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ํด๋์ค ์ธ๋ถ์์ ํจ์๋ฅผ ์ ์ํ๊ณ ์ด๊ฒ์ด ํด๋์ค์ ์ฐ๊ด ๋์ด ์๋ค๊ณ ์๋ ค์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
์ด๊ฒ์ย friendย ์์ ๋ฐฐ์๋ณด๊ธฐ๋ก ํ๊ณ ์ผ๋จ์, ์ธ๋ถ์์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
๊ธฐ๋ณธ์ ์ผ๋ก operator๋ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๋๋ค.
์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋, ์ฐ์ฐ์ ์ผ์ชฝ์ ๋์ธ ๊ฐ์ฒด, ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋, ์ฐ์ฐ์ ์ค๋ฅธ์ชฝ์ ๋์ธ ๊ฐ์ฒด๋ฅผ ๋งํ๋ค.
์ด ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ๋ง๋ก ์ค๋ช
ํด๋ณด๋ฉด, ์ด ์ฐ์ฐ์๋ ostream์ ๊ฐ์ฒด๋ฅผ reference ๋ก ๋ฆฌํดํ๋ค. <<
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด ์ผ์ชฝ์๋ ostream ์ ๊ฐ์ฒด๋ฅผ cout์ด๋ ์ด๋ฆ์ผ๋ก callbyreferenceํ๋ค.
์ค๋ฅธ์ชฝ์๋ Point ๊ฐ์ฒด๋ฅผ pt๋ผ๋ ์ด๋ฆ์ผ๋ก callbyreference ํ๋ค.
๊ทธ๋ ๊ฒ ํ์ ๋, cout์ผ๋ก ๊ฐ๊ฐ์ ์ถ๋ ฅํ๊ณ , cout ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค.
์ฌ๊ธฐ์, ์ฐ๋ฆฌ๊ฐ cout ๊ฐ์ฒด๋ก ์ฌ๋ฌ๋ฒ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ ์ด์ ๋, cout ๊ฐ์ฒด๋ฅผ ๋ฐํย ํ๊ธฐ ๋๋ฌธ์ด๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
๊ฐ์ ์๋ฆฌ๋ก, int, double๊ณผ ๊ฐ์ ๋ชจ๋ ์๋ฃํ์ ๋ํดย ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉย ์ ๋ฐฉ์์ผ๋ก ์์ ๊ฐ์ด ์ ์ธ๋์ด ์๋ค.
ํจ์ ์ค๋ฒ๋ก๋ฉ๋ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์ด ์๋ค.
์ฌ๊ธฐ๊น์ง ๊ตฌํํ ์ ์ฒด ์ฝ๋