언어/Basic C++

[Basic C++] #29_typedef

Hardii2 2022. 5. 22. 19:59

 

[Basic C++] #29_typedef

 

C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다.

"전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다.

 


 

Overview

 

  1. typedef
  2. 타입 에일리어스

 

#0. typedef

1. 개념

/************************************************/

typedef int* intPtr;

int* ptr1;	// Ok
intPtr ptr2;	// Ok

/************************************************/

typedef std::vector<std::string> StringVector;

int main()
{
    std::vector<std::string> myStringVector;
    StringVector myStringVector2	// 위와 동일
}

 

Details

 

  • typedef는 기존에 정의된 타입에 별명을 붙여줄 때 사용합니다.
  • 기존의 타입들을 자유자재로 사용 가능한 상황에서 굳이 "typedef" 키워드를 사용할 필요가 있을까 싶지만, 타입 이름이 길어질수록 코드의 가독성을 떨어뜨리는 것을 방지할 수 있습니다.
  • 예를 들면, 위 예제 코드에서 "std::vector <std::string> myString"을 "StringVector myString2"로 선언한 것을 볼 수 있습니다. 코드가 훨씬 간단해지고, 가독성 또한 향상되겠죠.

 

#1. 타입 에일리어스

1. 개념

typedef int MyInt;	// typedef 키워드 사용
using MyInt = int;	// 타입 에일리어스 사용

 

Details

 

  • typedef의 대안으로 Type Alias가 있습니다.
  • 위와 같이 "using"을 사용해 특정 타입에 대한 또 다른 이름을 설정합니다.