JIK_ 2022. 4. 20. 16:48

enum class ( scoped enum )

1) 이름 공간 관리 ( scoped)

2) 암묵적인 변환 금지

 

 

기존의 enum은 unscoped type 이라서 같은 이름의 enum 타입이 있으면 안됐었다.

 

11 부터는 enum class 를 사용한다.

 

기존의 enum은 진짜 숫자 0,1,2,3,4 등과 똑같아서

 

double a  = PT_KNIGHT ; 해도 암묵적으로 변환시켜줬다.

 

그러나 enum class 는 암묵적인 변환을 시켜주지 않는다.

 

static_cast 를 하면 가능

 


delete

 

암묵적으로 어떠한 함수 호출이 안되도록 막을때 자주 사용

 

예를 들자면 실습에서 nullptr 만들때 nullptr이라는 어떤 주솟값을 지닌애가 아니기 때문에 operator& (  & 연산자) 를 막아야만 했다.

고전적인 방법으로는 간단하게 operator&를 private로 정의해서 사용하지 못하게 했다.

 

그러나 friend 라는 키워드로 그것을 뚫어줄 수 있기 때문에 어떻게 보면 반쪽 짜리 방패였다.

 

그래서 delete 를 쓴다.

 

통상적으로 public 으로 해주는게 관례이다.