'C++' alias

토스트·2025년 5월 12일
0

'C++' basic

목록 보기
31/35

별칭(alias)

어떤 타입이나 이름에 대해 새로운 이름을 붙이는 것을 뜻합니다. 즉, 원래 타입이나 식별자를 다른 이름으로 부를 수 있도록 해주는 것입니다.
C++에서는 타입 별칭(using, typedef), 네임스페이스 별칭(namespace)이 있습니다.

Type alias

typedef

C 언어 시절부터 존재하는 구문으로, 기존 타입에 새로운 이름을 부여합니다.

예시

typedef int MyInt; // MyInt는 int의 별칭
MyInt x= 5; // int x = 5;와 동일합니다.

using

C++11에서 도입된 구문으로, 기존 타입에 새로운 이름을 부여합니다.

예시

using MyInt = int; // MyInt는 int의 별칭
MyInt x = 5; // int x = 5;와 동일합니다.

typedef와 동일한 역할을 하지만, 가독성이 더 좋고 템플릿과 함께 훨씬 강력하게 작동합니다.

typedef VS using

현대 C++에서는 기본적으로 더 간결하고 직관적인 using 사용을 권장합니다.

또한, 템플릿 타입을 별칭으로 지정하려고 할 때, using의 경우 별칭 지정이 가능하지만 typedef는 별칭 지정이 불가능합니다.

템플릿 타입 별칭 지정 | using

#include <iostream>
#include <vector>

using namespace std;

template<typename T>
using Vec = vector<T>;

int main() {
	Vec<int> v;

	return 0;
}

템플릿 타입 별칭 지정 | typedef (사용 불가)

#include <iostream>
#include <vector>

using namespace std;

template<typename T>
typedef Vec vector<T>; // Error

int main() {
	Vec<int> v; // Error

	return 0;
}

namespace alias

::로 이어지는 긴 네임스페이스 경로를 짧게 줄여서 쓰기 좋게 만드는 것입니다.

예시

namespace x = a::b::c

x::Something // a::b::c::Something과 동일합니다.

using namespace : 네임스페이스의 모든 이름을 현재 스코프에서 직접 사용할 수 있도록 하는 구문입니다. 이 구문을 사용하면, 긴 네임스페이스 경로(::)를 매번 입력하지 않고 네임스페이스 내의 모든 요소를 직접 사용할 수 있게 됩니다.
짧은 코드 예시에서는 유용할 수 있지만, 큰 프로젝트나 헤더 파일에서는 사용을 지양해야 합니다.

0개의 댓글