Beginning C++17 - Chapter 3: Working with fundamental data types
기본 데이타를 조작하는 방식에 대한 설명이다. Modern C++ 이전과 크게 달라진 것은 없어보이지만 몇가지 재미있는 기법과 키워드들이 추가되었다.
이전 장에서 배운 것 처럼 변수를 brace를 이용하여 초기화하고 bit masking 하는 법을 보여주고 있다.
라인 6 : 이진수로 초기화 하면서 구분자로 각각의 논리적인 영역을 표시하여 가독성을 높일 수 있다. 쓰면 쓸수록 괜찮은 기법이다. 이거 언제부터 가능해진거지? 책에서는 C11, 14, 17을 구분하면서 설명하지 않아 언제부터 가능해진 것인지 알기 어렵다.
이거는 사실 특별할 것 없는데 그동안 & 연산과 | 연산 이외에는 비트 연산을 해본적이 없어서 한번 테스트 해 보았다. 어떤 경우 이 연산이 필요한지는 아직도 모르겠다.
enum 값이 타입을 가질 수 있게 되었다. 더블어 enum도 class를 붙여줘야 한다. 내부적으로 어떤식으로 구현했는지 가늠해 볼 수 있는 부분이다. enum 이 Type Safe 해 졌고, 열거형 변수를 사용하려면 :: 인 scope 지정자를 사용해야 한다.
이전의 enum 의 경우에는 하나의 네임스페이스 안해서는 열거형 변수명이 달라야만 했다. 하지만 class화 되면서 이젠 동일해서 컴파일에 문제가 발생하지 않는다. 또한 강제로 캐스팅 할 수 없고 명시적으로 static_cast 를 이용해야맘 한다.
이 코드는 어떤식으로 테스트 해야할 지 몰라 그냥 코딩만 해 두었다. 위 코드처럼 별명을 붙일 수 있다. 물론 이 기능은 typedef 과 동일할 거지만 = 기호로 인해 좀 더 가독성이 높아진것 같다.
전역변수의 경우 :: scope 연산자를 이용하여 좀더 가독성이 전역 변수임을 확인할 수 있다.