๐ŸŽ„์ฝ”๋”ฉ ๊ทœ์น™ : ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ์ฐธ์กฐ ๋ฐ˜ํ™˜์ฒ˜๋ฆฌ ํ•˜์ž.

๋ณด๋ฌผ์ฐฝ๊ณ ยท2022๋…„ 8์›” 25์ผ
0

c++ basic ์ฝ”๋“œ๋ˆ„๋ฆฌ

๋ชฉ๋ก ๋ณด๊ธฐ
43/50

๊ฒฐ๋ก 

: ์ž„์‹œ ๊ฐ์ฒด๋กœ ์ธํ•œ ๋ณต์‚ฌ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด์„œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ์ œ์ž‘์‹œ ๋ฐ˜๋“œ์‹œ ์ฐธ์กฐ ํƒ€์ž…ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜์ž. ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋“œ์‹œ *this ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์šฐ๋ฆฌ๋Š” ๋ณต์‚ฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์•ผ ํ•จ.

  • ๊ฐ’ ๋ฐ˜ํ™˜ํ•˜๋”๋ผ๋„ ์„ธ๋ฒˆ ์—ฐ์‡„ ๋Œ€์ž…ํ•˜๋Š”๋ฐ ๋Š” ๋ฌธ์ œ ์—†์„ ์ˆ˜ ์žˆ๋”ฐ.
    (๋ณต์‚ฌ ์ƒ์„ฑ์ž์—์„œ ๋ฉค๋ฒ„ ๋Œ€์ž…๋งŒ ์ œ๋Œ€๋กœ ์ž‘์„ฑํ•ด์ค€๋‹ค๋ฉด, )
    ๊ทธ๋Ÿฐ๋ฐ ํ•„์š” ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ž„์‹œ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์ด ํ•จ์ •์ž„.

์ถ”๊ฐ€ : 240522

  • = ์—ฐ์‚ฐ๋ฟ ์•„๋‹ˆ๋ผ, += ์—ฐ์‚ฐ, -= , *= , /= ์—ฐ์‚ฐ๋“ฑ๋„ ๋ชจ๋‘ ์ฐธ์กฐ ๋ฐ˜ํ™˜์„ ํ•ด์•ผ ํ•œ๋‹ค.

์ถ”๊ฐ€ : 23.07.05

์ดํŽ™ํ‹ฐ๋ธŒ c++ ํ•ญ๋ณต 11๋ฒˆ : ์ž๊ธฐ ๋Œ€์ž… ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ž.

์ถ”๊ฐ€ : ํฌ์ธํ„ฐ ๊ฐ„์˜ ๋Œ€์ž… ์—ฐ์‚ฐ

  • ํฌ์ธํ„ฐ ๊ฐ์ฒด๊ฐ„์˜ ๋Œ€์ž…์„ ํ•˜๊ฒŒ ๋˜๋ฉด , ๋ณต์‚ฌ ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„
    ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ.

  • ์ถ”๊ฐ€์ ์œผ๋กœ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ a๋ฅผ ํ•ด์ง€ํ•˜๋ ค๊ณ  ํ•˜๋ฉด , ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ a,b๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋ฏ€๋กœ, ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•จ.

๋ณต์‚ฌ ์ƒ์„ฑ์ž์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž.

  • ๋ณต์‚ฌ ์ƒ์„ฑ์ž์™€ ๋ณต์‚ฌ ๋Œ€์ž…์—ฐ์‚ฐ์ž์˜ ์ฐจ์ด๋ฅผ ๋ถ„๋ช…ํžˆ ์•Œ๊ณ  ๊ฐ€์ž.
    1) ๋ณต์‚ฌ ์ƒ์„ฑ์ž.
    : ๊ฐ์ฒด๋ฅผ ์ฒ˜์Œ์œผ๋กœ ์ƒ์„ฑํ•  ์‹œ์—, ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ์ดˆ๊ธฐํ™”

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๋ฅผ ์ถœ๋ ฅํ•˜๋ผ.

(์˜ˆ์ œ ์‹ค์Šต. )๋Œ€์ž… ์—ฐ์‚ฐ์ž ๋ฐ˜ํ™˜์„ ์™œ ์ฐธ์กฐ๋กœ ํ•ด์•ผํ•จ?

-> ์•”์‹œ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ณต์‚ฌ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•จ.

  • ์˜ˆ์‹œ ์ฝ”๋“œ 1๋ฒˆ , ๊ฐ’๋ฐ˜ํ™˜ ํ•  ๊ฒฝ์šฐ.
    : ๋ณธ๋ž˜์˜ ๊ฐ์ฒด์ธ ์šฐ๋ณ€์— ์œ„์น˜ํ•œ ๊ฐ์ฒด๋กœ ์ธํ•ด์„œ ๋Œ€์ž…์—ฐ์‚ฐ์ž๋งŒ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š”๋ฐ
    ๋Œ€์ž… ์—ฐ์‚ฐ์ž๊ฐ€ value ๋ฐ˜ํ™˜์ด์–ด์„œ ์ž„์‹œ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•ด์„œ
    ๋ณต์‚ฌ ์ƒ์„ฑ์ž๊ฐ€ ํ•œ๋ฒˆ ๋” ํ˜ธ์ถœ๋œ ๊ฒƒ์ž„.

    ์ถ”๊ฐ€์ ์œผ๋กœ p1์˜ ๊ฐ’์€ p2์˜ ์ž„์‹œ๊ฐ์ฒด๊ฐ’์œผ๋กœ ๋Œ€์ž…๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๊ฒƒ์ž„.

  • ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, p1์˜ ๋ฉค๋ฒ„๊ฐ’๋งŒ ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

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์˜ ๋ฉค๋ฒ„์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค!

    1. ํ™•์ธ์„ ํ•ด๋ณผ๊นŒ?
      : ๋Œ€์ž… ์—ฐ์‚ฐ์ž์—์„œ print ํ˜ธ์ถœํ•ด์„œ ํ™•์ธํ•จ.
      ์ฒซ๋ฒˆ์งธ ์ถœ๋ ฅ์— copy= ์ถœ๋ ฅ ์ดํ›„์— 5,6 ์œผ๋กœ p2๊ฐ์ฒด๊ฐ€ ๊ฐ’๋ณ€๊ฒฝ์ด ์ด๋ฃจ์–ด์ง.(์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๋ฌธ์ œ ์—†์Œ..., ๋ฐ˜ํ™˜ํ•  ๋•Œ ๋ฌธ์ œ ๋ฐœ์ƒ.! )

3๋ฒˆ์งธ ์ค„์€ value ๋ฐ˜ํ™˜์ด์–ด์„œ ์ž„์‹œ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•ด ๋ณต์‚ฌ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋จ.
๊ทธ๋ฆฌ๊ณ  ์ž„์‹œ๊ฐ์ฒด๊ฐ€ p1 ๋กœ ๋Œ€์ž… ์ฒ˜๋ฆฌ๋จ.
-> ๋Œ€์ž… ์ฒ˜๋ฆฌ ์•ˆํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ.

    1. ์ง€๊ธˆ ์ด์ƒํƒœ์—์„œ ํ•ด๊ฒฐ์„ ์›ํ•œ๋‹ค๋ฉด, ๋ณต์‚ฌ ์ƒ์„ฑ์ž์—์„œ ๋Œ€์ž…ํ•˜๋ฉด
      ๊ฒ‰์œผ๋กœ ๋ณด๊ธฐ์—๋Š” ํ•ด๊ฒฐ ๋จ.
    1. ๊ณผ์—ฐ ์ด๋ ‡๊ฒŒ ํ•ด๋„ ๊ดœ์ฐฎ์€ ๊ฒƒ์ผ๊นŒ?
      : ์šฐ๋ฆฌ๋Š” ๊ฐ์ฒด๋ฅผ ์ด 3๊ฐœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ์ด์ƒํ•œ destructor 2๊ฐœ๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ํ˜ธ์ถœ๋œ๊ฒƒ์ผ๊นŒ?
      -> ๋Œ€์ž… ์—ฐ์‚ฐ์ž๊ฐ€ value ๋ฐ˜ํ™˜์ด์–ด์„œ ์ž„์‹œ๊ฐ์ฒด 2๊ฐœ๊ฐ€ ์ƒ์„ฑํ•จ. ์ฆ‰ ์ถœ๋ ฅ๋ฌธ๋„ ๋ณด๋ฉด ๋ณต์‚ฌ ๊ฐ’๋ฐ˜ํ™˜์œผ๋กœ ์ธํ•ด ๋ณต์‚ฌ์ƒ์„ฑ์ž 2๋ฒˆ ๋” ํ˜ธ์ถœ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ.
  • ๊ฒฐ๋ก 
    : ๋Œ€์ž…์—ฐ์‚ฐ์ž์˜ ๋ฐ˜ํ™˜ํƒ€์ž…์„ value๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด, ์—ฐ์ด์€ ๋Œ€์ž…ํ•  ๊ฒฝ์šฐ,
    ์ž„์‹œ๊ฐ์ฒด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    ์›๋ณธ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋Œ€์ž„์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๊ณ ,
    thisํฌ์ธํ„ฐ๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.


  • ์˜ˆ์‹œ ์ฝ”๋“œ 2๋ฒˆ, ์ฐธ์กฐ ๋ฐ˜ํ™˜ํ•  ๊ฒฝ์šฐ.
    : ๋ณต์‚ฌ๋Œ€์ž…๋งŒ ์ด๋ฃจ์–ด์ง€๊ณ , ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š์Œ.


๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ๋ณต์‚ฌ์ƒ์„ฑ์ž์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์™œ thisํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฑธ๊นŒ?

: ๋Œ€์ž…์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•„๋ผ.

  • 1๋‹จ๊ณ„) ๋ณต์‚ฌ ์ƒ์„ฑ์ž์ฒ˜๋Ÿผ ๋ฐ˜ํ™˜ ์•ˆํ• ๊บผ์ž„!!
    -> ์ด๋•Œ๋Š” ๋ฌธ์ œ ์—†์Œ!

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

  • 2๋‹จ๊ณ„) ์•ผ ๊ทธ๋Ÿผ p1 = p2 = p3์€ ๋จ?
    • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋Œ€์ž…์—ฐ์‚ฐ์ž๋Š” ๋ฌธ์ œ ์—†๋‹ค.
    • ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ค€ ์—ฐ์‚ฐ์ž๋กœ ํ™•์ธํ•ด๋ณด์ž.
      : ๋ฐ˜ํ™˜ํ•˜๋ผ๊ณ  ํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ.
    • ๋งˆ์ง€๋ง‰
      : ๋Œ€์ž… 2๋ฒˆ ์ด์ƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด, ๋ฐ˜๋“œ์‹œ ๋Œ€์ž…์—ฐ์‚ฐ์ž๋Š” thisํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.
profile
๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€