: ์์ ๊ฐ์ฒด๋ก ์ธํ ๋ณต์ฌ ์์ฑ์ ํธ์ถ ๋ฐฉ์ง๋ฅผ ์ํด์ ๋์
์ฐ์ฐ์ ์ ์์ ๋ฐ๋์ ์ฐธ์กฐ ํ์
ํํ๋ก ๋ฐํํ์. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋์ *this ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ค.
์ฐ๋ฆฌ๋ ๋ณต์ฌ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ๊ฒ์ ๋ง์์ผ ํจ.
์ดํํฐ๋ธ c++ ํญ๋ณต 11๋ฒ : ์๊ธฐ ๋์ ์ฐ์ฐ ์ฒ๋ฆฌ๋ฅผ ํ์.
ํฌ์ธํฐ ๊ฐ์ฒด๊ฐ์ ๋์
์ ํ๊ฒ ๋๋ฉด , ๋ณต์ฌ ๋ ๋ฐ์ํ์ง ์๋ ๊ฒ์
ํ์ธํ ์ ์์.
์ถ๊ฐ์ ์ผ๋ก ๋ธ๋ก ๋ด๋ถ์์ a๋ฅผ ํด์งํ๋ ค๊ณ ํ๋ฉด , ๋์ผํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ a,b๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ํฉ์ด๋ฏ๋ก, ์ค๋ฅ ๋ฐ์ํจ.
1๋ฒ)
Point p;
Point p2(p)
2๋ฒ)
Point p;
Point p2 = p;
2) ๋์
์ฐ์ฐ์.
: ์ด๊ธฐํ ์ดํ์ ๋์
์ ํ ๊ฒฝ์ฐ์ ํธ์ถ๋๋ ์ฐ์ฐ์.
Point p;
Point p2;
p2 = p;
: ์ปดํ์ผ๋ฌ๊ฐ ์๋์ ์ผ๋ก ๋ง๋ค์ด ์ฃผ๋ ๋์ ์ฐ์ฐ์ ํ๋ ํจ์
- ํ์
Point &operator=(const Point& p)
{
x = p.x;
y = p.y;
return *this;
}
์ ์ ์๋ ์ .
: ํ์์ ๋ณด๋ฉด, ์ปดํ์ผ๋ฌ๋ ๋ณต์ฌ ๊ฐ์ฒด ์์ฑ์ ๋ง๊ธฐ ์ํด ์ฐธ์กฐ๋ก ๋ฐํํ๋
๊ฒ์ ํ์ธํ ์ ์์.
์ ์ฐธ์กฐ ๋ฐํํด์ผํด! ๋ผ๋ ๋ฐ๋ก์ ๋ํด
: ๋ณต์ฌ ์์ฑ์์์๋ ๊ตณ์ด thisํฌ์ธํฐ๋ฅผ ๋ฐํํ์ง ์์์๋!! ๊ทผ๋ฐ ์
๋์
์ฐ์ฐ์์์๋ this ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ ๊ฑฐ๋!!
์ผ์ค๋์ ์ฐ์ฐ์ ํ ๋ operator=() ํ์ ๋ด์์
this๋ฅผ ๋ฐํํ์ง ์์ผ๋ฉด, a = b = c; ์์
b =c; ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๋ ๊ฐ์ฒด๊ฐ a์๊ฒ ์ ๋ฌ๋์ด์ผ ํ๋๋ฐ.
๋ณต์ฌ ์์ฑ์์ฒ๋ผ ์์ฑํ ๊ฒฝ์ฐ, ์ ๋ฌ๋์ง ์๋
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๋งจ ์๋์ ์์ ์ฝ๋๊ฐ ์๋ค.
๊ทธ๋ฐ๋ฐ ๋ณต์ฌ ์์ฑ์๋ ์ค๋ก์ง ํ๋์ ๊ฐ์ฒด์์๋ง ์งํ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
this ํฌ์ธํฐ๋ฅผ ๋ฐํํ์ง ์๋ ๊ฒ์ด๋ค.
๊ฐ ๋ฐํ์ผ๋ก ๋ง๋ค์ด ๋๊ณ ,
p2 = p1 = p3; ์ ํด๋ณด์๋ผ. ๊ทธ๋ฆฌ๊ณ p2๋ฅผ ์ถ๋ ฅํ๋ผ.
-> ์์์ ์ผ๋ก ์์ฑ๋๋ ๋ณต์ฌ ๊ฐ์ฒด ์์ฑ์ ์ฐจ๋จํ๊ธฐ ์ํจ.
์ถ๊ฐ์ ์ผ๋ก p1์ ๊ฐ์ p2์ ์์๊ฐ์ฒด๊ฐ์ผ๋ก ๋์ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ๊ฒ์.
Point p(1,2) , p2(3,4) , p3(4,5);
p = p2 = p3
์ฝ๋๋ฅผ ๋ณด๊ณ ์๊ฐํด๋ณด๋ฉด, value ๋ฐํ์ด๋ฉด, p2 = p3๋ ๋ฉค๋ฒ ๋์ ํ ๋ ๋ฌธ์ ์์ง๋ง, ๋ฐํํ์ ์ด value์ด๊ธฐ ๋๋ฌธ์ ๋ฐํํ ๋ ์์๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ , ์ฐ์ด์ด์ p3 ์ ๋ณต์ฌ๋ณธ์ด p2 ์ ๋์ ํ๊ฒ ๋จ. ์ด๋ก ์ธํด ํ์ ์๋ ๋ณต์ฌ ์์ฑ์๊ฐ ํธ์ถ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
-> ๊ฐ๋ฐํ์ผ๋ก ์ธํ ์์๊ฐ์ฒด์ ์์ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํจ ์ด ๊ฐ์ฅ ํฐ ์ด์ !
๊ทผ๋ฐ ์ p2๋ p3์ ๊ฐ์ ๊ทธ๋๋ก ๋ฐ์๊ฑฐ์ง?
: p2๋ ๋์
์ฐ์ฐ์์ ์ง์
ํด์ x,y ๊ฐ์ด ์ค์ ๋จ. ์ฒซ๋ฒ์งธ ์ค์ copy= ์ถ๋ ฅ
์ดํ๋ก ๋์
์ฐ์ฐ์๊ฐ value ๋ฐํ์ด์ด์ ์์ ๊ฐ์ฒด ์์ฑ์ ์ํด ๋ณต์ฌ์์ฑ์์ ์ง์
ํ๋ฉด์ copy๊ฐ ์ถ๋ ฅ๋จ์ ํ์ธ.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ฐ์!!
copy ๋ณต์ฌ๋ก ์ธํด ์์ ๊ฐ์ฒด๊ฐ ์์ฑ๋์๊ณ , (๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ํ์ฌ ๋ณต์ฌ์์ฑ์์ ๋์
์ฒ๋ฆฌ ์ํจ.)
์ด ์์๊ฐ์ฒด๊ฐ ๊ทธ๋๋ก p1 ์ ๋์
์ฐ์ฐ๋ ๊ฒ์.
-> ์ฌ๊ธฐ์ ์ค์ํ ์ ์ ๋ฐ๋ก ์์ print ํ์ธํ ๋๋ก, p2์ ๋ฉค๋ฒ์๋ ๋ฌธ์ ๊ฐ ์๋ค!
3๋ฒ์งธ ์ค์ value ๋ฐํ์ด์ด์ ์์๊ฐ์ฒด ์์ฑ์ ์ํด ๋ณต์ฌ ์์ฑ์๊ฐ ํธ์ถ๋จ.
๊ทธ๋ฆฌ๊ณ ์์๊ฐ์ฒด๊ฐ p1 ๋ก ๋์
์ฒ๋ฆฌ๋จ.
-> ๋์
์ฒ๋ฆฌ ์ํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ ๊ธฐ ๊ฐ์ด ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์์.
๊ฒฐ๋ก
: ๋์
์ฐ์ฐ์์ ๋ฐํํ์
์ value๋ก ํ๊ฒ ๋๋ฉด, ์ฐ์ด์ ๋์
ํ ๊ฒฝ์ฐ,
์์๊ฐ์ฒด๊ฐ ๋ฐ์ํ๋ค.
์๋ณธ ๊ฐ์ฒด๋ฅผ ํตํด ๋์์ ํ๊ธฐ ์ํด์ ๋ฐ๋์ ์ฐธ์กฐ ํ์
์ผ๋ก ๋ฐํํด์ผ ํ๊ณ ,
thisํฌ์ธํฐ๋ก ๋ฐํํด์ผ ํ๋ค.
์์ ์ฝ๋ 2๋ฒ, ์ฐธ์กฐ ๋ฐํํ ๊ฒฝ์ฐ.
: ๋ณต์ฌ๋์
๋ง ์ด๋ฃจ์ด์ง๊ณ , ๋ณต์ฌ ์์ฑ์๋ ํธ์ถ๋์ง ์์.
: ๋์ ์ฐ์ฐ์๋ฅผ ๋ง๋ค์ด ๋ณด์๋ผ.