[C++] Const

Singery00Β·2024λ…„ 5μ›” 19일
0

C++

λͺ©λ‘ 보기
3/7
post-thumbnail

κ°œμš”

πŸ’‘ Const에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.

C와 C++μ—μ„œλŠ” constλΌλŠ” ν‚€μ›Œλ“œκ°€ μ‘΄μž¬ν•œλ‹€.
const의 κ°œλ…κ³Ό 역할에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.


λ³Έλ‘ 


μƒμˆ˜

μƒμˆ˜λž€?

const에 μ•žμ„œ μƒμˆ˜λΌλŠ” κ°œλ…μ„ λ¨Όμ € μ•Œκ³  μžˆμ–΄μ•Ό ν•œλ‹€.

μƒμˆ˜λŠ” λ³€ν•˜μ§€ μ•ŠλŠ” 값을 μ˜λ―Έν•œλ‹€.

예λ₯Ό λ“€μ–΄ numμ΄λΌλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€μ—ˆλ‹€κ³  ν•˜κ² λ‹€.

	int num = 0;

μ΄λ•Œ λ³€μˆ˜ num은 μ½”λ“œμ˜ 진행에 따라 값이 λ”ν•΄μ§€λ˜, κ³±ν•΄μ§€λ˜ λ“±λ“±μœΌλ‘œ 값이 μ–Όλ§ˆλ“ μ§€ λ³€ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ μƒμˆ˜λŠ” μ„ μ–Έκ³Ό λ™μ‹œμ— μ •μ˜κ°€ 이루어져야 ν•˜λ©° κ·Έ λ‹€μŒλΆ€ν„° 값을 λ³€κ²½ν•  수 μ—†λ‹€.

μƒμˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 이유

코딩을 ν•˜λ‹€ 보면 λ³€μˆ˜λ“€ 톡해 값을 λ³€κ²½ν•˜λŠ” 일은 λΉ„μΌλΉ„μž¬ν•˜λ‹€.
κ²Œμž„ ν”„λ‘œκ·Έλž˜λ°μ—μ„  해상도, 이동 κ΄€λ ¨ λ³€μˆ˜κ°’ λ“±λ“±κ³Ό 같이 μ ˆλŒ€ λ³€ν•΄μ„  μ•ˆλ˜κ±°λ‚˜ μ˜ˆλ―Όν•œ 값듀이 μ‘΄μž¬ν•œλ‹€.

κ·Έλ•Œ λ³€μˆ˜λ“€μ˜ 값이 λ³€ν•˜μ§€ μ•Šλ„λ‘ λ°©μ§€ν•˜λŠ” 것이 μƒμˆ˜μ΄λ‹€.

그리고 #define을 톡해 μ²˜μŒλΆ€ν„° μƒμˆ˜λ‘œ λ§Œλ“  λ³€μˆ˜κ°€ μ•„λ‹ˆλ”λΌλ„
constλ₯Ό 톡해 μƒμˆ˜ν™”λ₯Ό μ‹œν‚¬ 수 μžˆλŠ” 것이닀.


const

constλŠ” μƒμˆ˜ν™”λ₯Ό μ‹œμΌœμ£ΌλŠ” ν‚€μ›Œλ“œμ΄λ‹€.

λ³€μˆ˜, 포인터, 멀버 ν•¨μˆ˜ λ“±κ³Ό μœ„μΉ˜μ— 따라 λ™μž‘μ΄ λ‹¬λΌμ§€λŠ”λ° ν•˜λ‚˜μ”© μ•Œμ•„ 보겠닀.

λ³€μˆ˜

비멀버 λ³€μˆ˜

μ•„λž˜μ™€ 같이 μƒμ„±ν•œ λ³€μˆ˜λŠ” μ–Έμ œλ“ μ§€ 값을 μˆ˜μ •ν•  수 μžˆλ‹€.

#include <iostream>

int main()
{
	int a = 5;
	
	a = 10;
}

ν•˜μ§€λ§Œ constλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ μƒμˆ˜ν™”κ°€ λ˜μ–΄ 값을 λ³€κ²½ν•  수 μ—†λ‹€.
일반 λ³€μˆ˜μ—μ„œλŠ” const의 μœ„μΉ˜κ°€ νƒ€μž… μ•ž,λ’€λ‘œ μ‚¬μš©λ˜λ©° λ™μΌν•œ κ²°κ³Όλ₯Ό μ–»λŠ”λ‹€.

const둜 μƒμˆ˜ν™”ν•œ ν›„ aλ₯Ό λ³€κ²½ν•˜λ €κ³  ν•  μ‹œ μ—λŸ¬κ°€ λ‚˜λŠ” 것을 확인할 수 μžˆλ‹€.

멀버 λ³€μˆ˜

포인터

ν¬μΈν„°μ—μ„œλŠ” const의 μœ„μΉ˜μ— 따라 λ™μž‘μ΄ μ™„μ „νžˆ 달라진닀.

μƒμˆ˜ μ§€μ‹œ 포인터 ( pointer to const )

λ¨Όμ € νƒ€μž… μ•ž constλ₯Ό μ‚¬μš©ν•œ μ˜ˆμ‹œμ΄λ‹€.

int* ptr을 μƒμˆ˜ν™”ν•˜λ©°, μ—­μ°Έμ‘°ν•˜μ—¬ μˆ˜μ •ν•  수 μ—†λ‹€.

μƒμˆ˜ 포인터 ( const pointer )

νƒ€μž… 뒀에 constλ₯Ό μ‚¬μš©ν•œ μ˜ˆμ‹œμ΄λ‹€.

포인터 λ³€μˆ˜λ₯Ό μƒμˆ˜ν™”ν•˜λ©°, μ§€μ •λœ μ£Όμ†Œκ°’μ„ λ³€κ²½ν•  수 μ—†μœΌλ‚˜ μ°Έμ‘°ν•˜λŠ” 값을 μˆ˜μ •ν•  수 μžˆλ‹€.

ν•¨μˆ˜

맀개 λ³€μˆ˜ μžλ£Œν˜•μ— μ‚¬μš©λœ 경우

λ§€κ°œλ³€μˆ˜μ˜ 값이 ν•¨μˆ˜ λ‚΄μ—μ„œ λ³€κ²½λ˜μ§€ μ•ŠλŠ”λ‹€.

ν•¨μˆ˜ 선언에 μ‚¬μš©λœ 경우

ν•¨μˆ˜ λ‚΄μ—μ„œ 멀버 λ³€μˆ˜μ˜ κ°’ 변경이 λΆˆκ°€λŠ₯ν•˜λ‹€.
Setterλ₯Ό μ˜ˆμ‹œλ‘œ 보자.

constλ₯Ό μ‚¬μš©ν•˜λ©΄ λ‚΄λΆ€μ—μ„œ κ°’ λ³€κ²½ μ‹œ 였λ₯˜κ°€ λ°œμƒν•¨μ„ 확인할 수 μžˆλ‹€.


마무리

μœ„μΉ˜κ³Ό μ‚¬μš© λŒ€μƒμ— 따라 λ™μž‘μ΄ λ³€ν•΄μ„œ ν–‡κ°ˆλ¦΄ 수 μžˆμœΌλ‹ˆ 잘 μ•Œμ•„λ‘λ„λ‘ ν•˜μž.

profile
κ²Œμž„ κ°œλ°œμžκ°€ λ˜μ–΄λ³΄μž

0개의 λŒ“κΈ€