[C++] keyword: enum class
1. ์ค๋ช
C++03๊น์ง์ enum์ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์์๋ค. ๊ทธ๋์ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ C++11๋ถํฐ enum class๋ผ๋ ๊ฒ์ด ๋ฑ์ฅํ๋ค. ๊ธฐ์กด enum์ ๋ฌธ์ ์ ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
1.1) ๊ธฐ์กด enum์ ๋ฌธ์
1.1.1) ์ ๋ฐฉ ์ ์ธ ๋ถ๊ฐ๋ฅ
๊ธฐ์กด enum์ enumerator์ ์ด๋ค ๊ฐ์ด ๋ค์ด์์์ง ์ ์ ์์ผ๋ฉด ๊ทธ ํฌ๊ธฐ๋ฅผ ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ฐฉ ์ ์ธ์ ํ ์ ์๋ค.
enum Fruit; // ์ ๋ฐฉ ์ ์ธ ๋ถ๊ฐ๋ฅ
void main()
{
Fruit f = Apple; // ๋ฐ๋ผ์ ํด๋น enum์ ์ฐพ์์ ์์
}
enum Fruit
{
Apple,
Banana,
Peach,
};
๋ฐ๋ผ์ ์์ ๊ฐ์ด ์ปดํ์ผ์ ํ ์ ์์ผ๋ฉฐ ๋งค ํ์ผ ์๋จ์ enum์ ์ ์ํด์ค์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
1.1.2) ์ด๋ฆ์ ๋ฒ์๊ฐ ํ์ ๋์ง ์์
enum Fruit
{
Apple,
Banana,
Peach,
};
enum Food
{
Banana, // ์์ Fruit์ Banana์ ์ด๋ฆ ์ค๋ณต!
Kimchi,
Meat,
};
์์ ๊ฒฝ์ฐ์ ๊ฐ์ด ์๋ก ๋ค๋ฅธ enum์ด ์ค๋ณต๋ ์ด๋ฆ์ ๊ฐ๊ณ ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ์ผ์ด๋๋ค. ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ enum class๊ฐ ๋์ค๊ธฐ ์ ์๋ ๋ค์ ์คํ์ด์ค๋ฅผ ๋ฐ๋ก ๋๊ฑฐ๋ ์ด๋ฆ์ ๊ฒน์น์ง ์๊ฒ ์ง์ ํด์ค์ผ ํ๋ค.
1.1.3) ์์์ ๋ณํ
enum Fruit
{
Apple,
Banana,
Peach,
};
void main()
{
int a = Apple; // ๋ณํ ํ์ฉ
}
๊ธฐ์กด์ enum์ int ๋ฑ์ ๊ฐ์ผ๋ก ์๋์ ์ผ๋ก ๋ณํํ๋ค. ์ด๋ฐ ์ ์ด ํธ๋ฆฌํ๋ค๊ณ ์๊ฐํ ์ ์๊ฒ ์ง๋ง ์ค์๋ฅผ ์ผ๊ธฐํ๊ธฐ ์ฝ๋ค.
1.2) enum class
์์ ์ธ๊ธํ enum์ ๋ฌธ์ ์ ์ enum class๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
enum class Fruit
{
Apple = 1,
Banana, // ์ด๋ฆ ์ค๋ณต OK
Peach,
};
enum class Food; // ์ ๋ฐฉ ์ ์ธ OK
void main()
{
Fruit f = Fruit::Apple;
Food f2;
int a = static_cast<int>(f); // ๋ช
์์ ๋ณํ OK
}
enum class Food
{
Banana,
Kimchi,
Meat,
};
์ฝ๋ ํ๋๋ก ์ค๋ช ์ด ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
1. ์ ๋ฐฉ์ ์ธ์ ํตํด ํค๋์ CPP ํ์ผ๋ก ๋ถ๋ฆฌํ๋ ๋ฑ์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ก๋ค. |
2. ์ฐธ๊ณ ๋ฐ ์ถ์ฒ
https://blog.seulgi.kim/2015/11/cpp-enum-class.html
https://unikys.tistory.com/376
'Language > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++11] keyword: static_assert (1) | 2020.07.23 |
---|---|
[C++] keyword: static_cast, dynamic_cast, reinterpret_cast, const_cast (0) | 2020.07.23 |
[C++] keyword: noexcept (0) | 2020.07.23 |
[C++11] keyword: constexpr (0) | 2020.07.23 |
[C++] keyword: using (0) | 2020.07.23 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++11] keyword: static_assert
[C++11] keyword: static_assert
2020.07.23 -
[C++] keyword: static_cast, dynamic_cast, reinterpret_cast, const_cast
[C++] keyword: static_cast, dynamic_cast, reinterpret_cast, const_cast
2020.07.23 -
[C++] keyword: noexcept
[C++] keyword: noexcept
2020.07.23 -
[C++11] keyword: constexpr
[C++11] keyword: constexpr
2020.07.23