728x90
Const ๋ณ์
const int rangeDistance = 125;
- const ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์์๋ก ์ ์ธํ์ฌ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ณ๊ฒฝํ ์ ์๋๋ก ์ง์ ํ ์ ์๋ค. ์ฆ, ์ฝ๊ธฐ๋ง ๊ฐ๋ฅ
- ์ปดํ์ผ ํ์ ๋ ํด๋น const ์์์ ๊ฐ์ด ๊ฒฐ์ ๋๋ฉฐ, ๋ฐํ์ ์ค์๋ ๋ณ๊ฒฝํ ์ ์๋ค.
- ํํ ์ฌ๊ฑฐ๋ฆฌ, ์์ผ ๊ฑฐ๋ฆฌ, ์คํฌ ๊ณ์ ๋ฑ๊ณผ ๊ฐ์ด ํ ๋ฒ ์ค์ ํ ๊ฐ์ ๊ณ์ ์ ์งํ๋ฉด์ ์ฌ์ฉํ ๋ ์ ์ฉํ๊ณ , ํ๋ก๊ทธ๋๋จธ์ ์ค์๋ก ๊ฐ์ ๋ณ๊ฒฝํ์ฌ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ค์ด ์ํฉ ๋ํ ์๋ฐฉํด์ค๋ค.
ํฌ์ธํฐ ์์์ ์์ ํฌ์ธํฐ
ํฌ์ธํฐ ์์
- ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ์์๋ก ๋ง๋ค์ด ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๋ค.
- ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ณ์์ ๊ฐ์ ์ง์ ๋ณ๊ฒฝํ๊ฑฐ๋, ํฌ์ธํฐ ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ฐ๋ฅ
int hp = 100, damage = 5;
const int* ptr = &hp;
// (*ptr) = 15; ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
hp = 15; // ๋ณ์ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
ptr = &damage; // ํฌ์ธํฐ ์ฃผ์๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
์์ ํฌ์ธํฐ
- ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ ์์ฒด๋ฅผ ์์๋ก ๋ง๋ค์ด ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๋ค.
- ํฌ์ธํฐ์ ๋ค๋ฅธ ์๋ก์ด ์ฃผ์๋ฅผ ํ ๋นํ๋ ๊ฒ ๋ถ๊ฐ๋ฅ
- ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ด๋ ๊ฐ๋ฆฌํค๋ ๋ณ์๋ฅผ ์ง์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ฐ๋ฅ
int hp = 100, damage = 5;
int* const ptr = &hp;
// ptr = &damage; ํฌ์ธํฐ ์ฃผ์๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
(*ptr) = 15; // ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
hp = 15; // ๋ณ์ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋, ๊ฐ๋ฆฌํค๋ ๊ฐ๋ ๋ณ๊ฒฝํ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์๋ ์๋ค.
int hp = 100, damage = 5;
const int* const ptr = &hp;
// ptr = &damage; ํฌ์ธํฐ ์ฃผ์๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
// (*ptr) = 15; ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
hp = 15; // ๋ณ์ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
Const ๋ฉค๋ฒ ํจ์
class Monster {
int hp;
public:
int GetHP() const; // ์์ ๋ฉค๋ฒ ํจ์ ์ ์ธ๋ถ
void SetHP(int hp);
};
int Monster::GetHP() const { // ์์ ๋ฉค๋ฒ ํจ์ ๊ตฌํ๋ถ
return hp;
}
void Monster::SetHP(int hp) {
this->hp = hp;
}
- const ํค์๋๋ฅผ ํตํด ๋ฉค๋ฒ ํจ์๋ฅผ ์ ์ธํ๋ฉด, '์ฝ๊ธฐ ์ ์ฉ' ํจ์๋ก ์ง์ ํ ์ ์๋ค. ์ฆ, ์์ ๋ฉค๋ฒ ํจ์๊ฐ ๋๋ค.
- ํด๋น ํจ์๋ ๋ค๋ฅธ ๋ณ์์ ๊ฐ์ ๋ฐ๊พธ์ง ์๋ ํจ์๋ผ๊ณ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ์๊ฒ ๋ช ์์ํฌ ์ ์๋ค.
- ์์ ํจ์ ๋ด์์๋ ๊ฐ์ฒด๋ค์ ์ฝ๊ธฐ๋ง ์ํ๋๊ณ , ์์ ํจ์ ๋ด์์ ํธ์ถํ ์ ์๋ ํจ์๋ ๋ค๋ฅธ ์์ ํจ์๋ง ๊ฐ๋ฅ
Const ๊ฐ์ฒด
Monster slime;
const Monster ribbonPig;
slime.GetHP();
slime.SetHP(100);
ribbonPig.GetHP();
// ribbonPig.SetHp(100); const ๊ฐ์ฒด๋ ๋ด๋ถ ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ
- const ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด๋ ๋ด๋ถ ๋ฉค๋ฒ ๊ฐ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๊ณ , ์์ ์ ๋ถ๊ฐ๋ฅํ๋ค.
- ์ด๋ฐ ํน์ง์ ์ด์ฉํด์, ํจ์์์ const &๋ก ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ์ฐธ์กฐํ ๊ฐ์ฒด ์์ ์ ๋ถ๊ฐ๋ฅํ๊ณ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๋๋ก ์์ฉํ ์๋ ์๋ค.
์ฐธ๊ณ
728x90
๋ฐ์ํ
'๐ฏ๏ธLanguage > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] mutable ํค์๋ (0) | 2022.03.08 |
---|---|
[C++] explicit ํค์๋ (0) | 2022.02.12 |
[C++] ์ฐธ์กฐ ๋ฆฌํด ํจ์ (0) | 2022.02.09 |
[C++] ์ด๊ธฐํ ๋ฆฌ์คํธ(Initializer list), static (0) | 2022.02.09 |
[C++] ๋ณต์ฌ ์์ฑ์(Copy constructor), ์์ ๋ณต์ฌ(Shallow Copy), ๊น์ ๋ณต์ฌ(Deep Copy) (0) | 2022.02.09 |