C++ auto / decltype / enum / typedef / using

jaeha_lee·2022년 5월 13일
0

auto / decltype

  • auto
    • 변수 선언시, 우변의 표현식 조사해서 컴파일러가 타입 결정
    • 컴파일 할 때 타입 결정, 실행 시 오버헤드 많음
  • decltype
    • ( ) 안의 표현식으로 타입을 결정 → 함수(클래스) 템플릿 등을 만들 때 주로 사용
  int main(){
  	int x[5] = {1,2,3,4,5};
    
    auto n = x[0]; // int n = x[0]
    decltype(n) n1; // int n1
  }

주의해야할 예시

  int main(){
  	int x[5] = {1,2,3,4,5};
    
    auto a = x;				// int*a = x; 이렇게 됨
    
    decltype(x) d;			// int d[5] / x의 타입은 int[5]임
    decltype(x) d1 = x;		// error 저렇게 x를 넣으면 x 자체는 주소값
    
  }

typedef 헷갈리는 예시들 - 함수 형태 쓸때

# EX1
typedef int(*JAEHA) (int); // 함수 꼴을 typedef 한 것

JAEHA h; // int(*h) (int) 이렇게 됨
// 즉 typedef 이후에 존재하는 단어들 중에 존재하지 않는 문자열이
// 해당 표기법을 typedef 한거임

# EX2
enum d {MON, TUE, WED, THU, FRI, SAT, SUN};
typedef enum d DAY; //enum 자료형인 d를 DAY로 부름
// tip으로
enum d {MON=3, TUE, WED, THU, FRI, SAT, SUN};
// 이렇게 하면 3,4,5,6 ... 이렇게 됨
// enum을 선언하면 MON,TUE를 그냥 사용 가능
int x = TUE; //가능해짐

Using

  • typedef VS using
    • typedef - type에 대한 별칭
    • using - type에 대한 별칭 + template에 대한 별칭

0개의 댓글