😊 μ½”λ”© κ·œμΉ™ : μƒμˆ˜ 멀버 ν•¨μˆ˜

보물창고·2022λ…„ 2μ›” 26일
0

c++Intermediate μ½”λ“œλˆ„λ¦¬

λͺ©λ‘ 보기
5/62

μƒμˆ˜ 멀버 ν•¨μˆ˜

: 선택이 μ•„λ‹Œ ν•„μˆ˜λ‹€!

μ•ˆμ •μ„±λ„ μžˆμ§€λ§Œ, ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 미리 μ œν•œ 사항을 λ”±! μ§€μ •ν•˜λŠ” 것이닀.

λ°˜λ“œμ‹œ μ‚¬μš©ν•΄μ•Όν• λ•Œ?

  • μ—°μ‚°μž 비ꡐ ν•¨μˆ˜ κ΅¬ν˜„μ‹œ < , == λ“±μ˜ 경우, μƒμˆ˜κ°μ²΄λ„ 비ꡐ 연산을
    ν•˜κΈ° μœ„ν•΄μ„œ const λΆ™μ—¬μ•Ό ν•œλ‹€.

μ•žμ— const? 뒀에 const

  • ν˜ΈμΆœλ˜λŠ” κ³³μ—μ„œ λ³€κ²½ν•  ν•„μš”κ°€ μ—†μœΌλ©΄, μ•žμ— const λΆ™μ΄μž.
  • ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ³€κ²½ 사항이 μ—†μœΌλ©΄ , ν•¨μˆ˜ 내뢀에 const λΆ™μ΄μž.

μ΄μœ μ— λŒ€ν•΄μ„œ

  1. μƒμˆ˜ 객체둜 μ‚¬μš©ν•  경우, κ°’ 섀정은 λ¬Όλ‘  λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ,
    좜λ ₯의 경우 , constλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ errorκ°€ λ°œμƒν•¨.
    - μ™œ λ°œμƒν•˜λŠ”κ±°μ§€??
    : λ³€μˆ˜ p λŠ” μ„ μ–Έ μ‹œ μ΄ˆκΈ°ν™”λœ 후에 변경이 되면 μ•ˆλ˜λŠ” "μƒμˆ˜" 둜 선언이 λ˜μ—ˆλ‹€.
    μ΄λŠ” λ‹Ήμ—°νžˆ 멀버 λ³€μˆ˜μ˜ 값을 λ°”κΎΈλŠ” 것이 ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

- κ·Έλ ‡λ‹€λ©΄ 멀버 ν•¨μˆ˜ 호좜인데 μ™œ μ—λŸ¬κ°€ λ°œμƒ???
: 멀버 ν•¨μˆ˜ μ•ˆμ—μ„œ 멀버 λ³€μˆ˜κ°€ 변경될 수 있기 λ•Œλ¬Έμ΄λ‹€.
컴파일러 μž…μž₯μ—μ„œλŠ” print 멀버 ν•¨μˆ˜ μ•ˆμ—μ„œ 멀버 λ³€μˆ˜κ°€ μ ˆλŒ€λ‘œ λ³€κ²½λ˜μ§€ μ•ŠλŠ” λ‹€λŠ” 것을 보μž₯ν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” 것이닀.

- 그럼 μ–΄λ–»κ²Œ 멀버 ν•¨μˆ˜ μ•ˆμ—μ„œ 멀버 λ³€μˆ˜ μˆ˜μ •μ„ λͺ»ν•˜κ²Œ λ§Œλ“€κΉŒ???
-> μƒμˆ˜ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μž.

- 그런데 μƒμˆ˜ 객체가 λ°˜λ“œμ‹œ ν•„μš”ν•œκ°€ 에 λŒ€ν•œ 생각을 ν• μˆ˜ 있음.
-> λ§€κ°œλ³€μˆ˜λ‘œ 객체λ₯Ό 보낼 λ•Œ 볡사λ₯Ό λ°©μ§€ν•˜κ³ , λ™μ‹œμ— rValue 도 λ°›κΈ° μœ„ν•΄μ„œ
const & 객체λ₯Ό μ‚¬μš©ν•΄μ™”λ‹€..
==> 이 λ•Œ, λ°˜λ“œμ‹œ const 멀버 ν•¨μˆ˜μ— λŒ€ν•œ ν•„μš”μ„±μ„ 인지할 수 있음.

μƒμˆ˜ κ°μ²΄λŠ” μƒμˆ˜ 멀버 ν•¨μˆ˜λ§Œ ν˜ΈμΆœν•  수 있음.

  1. call by ref 일 경우
  • func ν•¨μˆ˜μ˜ 경우, call by ref둜 λ˜μ–΄ 있음.
    κ·Έλ ‡λ‹€κ³  ν•΄μ„œ μƒμˆ˜μ„±μ„ μ§€μš°κ²Œ 되면 외뢀에 μ‘΄μž¬ν•˜λŠ” funcμ—μ„œ _obj의 내뢀에 접근이 κ°€λŠ₯ν•˜λ―€λ‘œ constλ₯Ό ν’€λ©΄ μ•ˆλ¨.
  • getX() ν•¨μˆ˜κ°€ const성을 가지고 μžˆμ§€ μ•ŠμœΌλ―€λ‘œ λ°œμƒν•˜λŠ” λ¬Έμ œμž„.
    λ°˜λ“œμ‹œ constλ₯Ό μ€˜μ•Ό 함. 을 인지할 수 있음.

객체의 μƒνƒœλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šμ€ λͺ¨λ“  멀버 ν•¨μˆ˜, getν•¨μˆ˜μ˜ κ²½μš°μ—λŠ”
λͺ¨λ‘ const λ₯Ό λΆ™μ—¬μ•Ό 함.
call by ref λ•Œλ¬Έμ—λΌλ„!

μΆ”κ°€μ μœΌλ‘œ μ™ΈλΆ€μ—μ„œ κ°’ λ³€κ²½ λͺ»ν•˜κ²Œ ν•¨μˆ˜ μ•žμ—λ‹€κ°€λ„ const λ₯Ό μž‘μ„±ν•˜μž.
: const void print() const { cout << " " << x << " " << y << endl; }

μƒμˆ˜ ν•¨μˆ˜μΌλ•Œμ™€ μ•„λ‹λ•Œμ˜ μ½”λ“œ μ‚¬μš©μ˜ˆμ‹œ 240801

  • μƒμˆ˜ ν•¨μˆ˜λ‘œ ν•˜λ”λΌλ„, λ°˜λ“œμ‹œ μƒμˆ˜κ°μ²΄λ§Œ 접근이 κ°€λŠ₯ν•œ 것은 μ•„λ‹ˆλ‹€.
    일반 객체도 접근이 κ°€λŠ₯ν•˜λ‹€.

  • const 성이 μ—†λ‹€λ©΄? 일반 객체만 접근이 κ°€λŠ₯ν•˜λ‹€.

profile
πŸ”₯πŸ”₯πŸ”₯

0개의 λŒ“κΈ€