[C++] keyword: const
๊ธ ์์ฑ์: ๋ฅํด๋ฒ .
๋ฐ์ํ
1. ์ค๋ช
const ํค์๋์ ํจ๊ป ์ ์ํ ๋ณ์์ ๊ฐ์ ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์ฆ, ์์ํ ๋์ด๋ฒ๋ฆฌ๋๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฐ๋๋ฉด ์ ๋ ๊ฐ์ด ์์ ๊ฒฝ์ฐ ์ ์ฉํ๋ค.
์ฝ๋๊ฐ ๊ธธ์ด์ง ์ค์๋ก ๋ณ์์ ๊ฐ์ด ๋ฐ๋์ด ์ง๋ ๊ฒ์ ๋ฐฉ์งํ ๊ฒฝ์ฐ ํ์ฉํ ์ ์๋ค.
2. ์์
2.1) ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ
const int a = 1;
a = 5; // error!
ํ๋ฒ ์ค์ ๋ a๋ read-only memory์ ์ฌ๋ผ๊ฐ๊ฒ ๋๊ณ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋๋ค.
2.1) ํจ์ ๋ด ์ธ์๊ฐ์์ ํ์ฉํ๋ ๊ฒฝ์ฐ
class Child
{
public:
int age;
string name;
string address;
Child() = default;
Child(int age, string name, string address) :
age(age), name(name), address(address) { cout << "Child Constructor Call" << endl; }
void set_age(int age)
{
this->age = age;
}
};
void example(const Child& c)
{
c.age = 5; // ์์ ๋ถ๊ฐ๋ฅ
c.set_age(5); // ํจ์๋ก๋ ์์ ๋ถ๊ฐ๋ฅ
}
2.3) ํด๋์ค ๋ด ๋ฉค๋ฒ ํจ์์์ ํ์ฉํ๋ ๊ฒฝ์ฐ
class Child
{
private:
int age;
string name;
string address;
void set_age(int age)
{
this->age = age;
}
public:
Child() = default;
Child(int age, string name, string address) :
age(age), name(name), address(address) { cout << "Child Constructor Call" << endl; }
void const_func() const
{
age = 5; // ์ปดํ์ผ ์๋ฌ! constํจ์ ๋ด์์ ๋ฉค๋ฒ ๋ณ์์ ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ค.
set_age(5); // ์ปดํ์ผ ์๋ฌ! constํจ์ ๋ด์์ const๊ฐ ์๋ ํจ์๋ ํธ์ถ ํ ์ ์๋ค.
}
};
2.4) ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
int a = 5;
const int* ptrA = &a; // ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
// *ptrA = 6; ๋ถ๊ฐ๋ฅ(ํฌ์ธํฐ๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ด ์์์)
ptrA = nullptr; // ๊ฐ๋ฅ
2.4) ์์ ํฌ์ธํฐ
int a = 5;
int* const ptrA = &a; // ์์ ํฌ์ธํฐ
*ptrA = 6; // ๊ฐ๋ฅ
//ptrA = nullptr; ๋ถ๊ฐ๋ฅ, ํฌ์ธํฐ ์์ฒด๊ฐ ์์๋ค.
๋ฐ์ํ
'Language > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] keyword: explicit (0) | 2020.07.22 |
---|---|
[C++] keyword: inline, __inline, __forceinline (0) | 2020.07.22 |
[C++11] keyword: final (0) | 2020.07.22 |
[C++11] keyword: override (0) | 2020.07.22 |
[C++] keyword: virtual (0) | 2020.07.22 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++] keyword: explicit
[C++] keyword: explicit
2020.07.22 -
[C++] keyword: inline, __inline, __forceinline
[C++] keyword: inline, __inline, __forceinline
2020.07.22 -
[C++11] keyword: final
[C++11] keyword: final
2020.07.22 -
[C++11] keyword: override
[C++11] keyword: override
2020.07.22