>백엔드 개발 >C++ >C의 유형 별칭에 대한 `typedef`와 `using`의 주요 차이점은 무엇입니까?

C의 유형 별칭에 대한 `typedef`와 `using`의 주요 차이점은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-25 20:27:09540검색

What's the Key Difference Between `typedef` and `using` for Type Aliases in C  ?

C에서 'typedef'와 'using'의 뉘앙스 이해

C에서 'typedef'와 'using' 키워드는 모두 유형 별칭 생성을 용이하게 합니다. 유사한 목적을 제공하지만 구현에는 미묘한 차이가 있습니다.

C 11 이상에서는 'using' 구문이 유형 별칭을 정의하는 간결한 방법으로 나타났습니다. 예:

using MyInt = int;

이것은 전통적인 'typedef'와 의미상 동일합니다:

typedef int MyInt;

그러나 'using' 구문은 "템플릿 typedef를 표현하는 기능으로 인해 널리 보급되었습니다. ":

template<class T> using MyType = AnotherType<T, MyAllocatorType>;

이제 별칭과 관련하여 'typedef'와 'using'의 잠재적인 차이점을 살펴보겠습니다. 힘. 'typedef'는 "약한" 앨리어싱 동작으로 알려져 있습니다. 즉, 새 유형을 생성하지 않고 단지 새 이름만 설정한다는 의미입니다. 별칭 유형과 원래 유형 간의 변환은 암시적입니다.

'사용'이 비슷하게 동작합니까, 아니면 새로운 유형이 생성됩니까?라는 질문이 생깁니다. C 표준(7.1.3.2)에 따라 대답은 의미론적으로 동일하다는 것입니다.

"It [using] has the same semantics as if it were introduced by the typedef specifier. In particular, it does not define a new type and it shall not appear in the type-id."

따라서 'typedef'와 'using'은 모두 새로운 유형을 생성하지 않고 약한 별칭을 생성하므로 결과적으로 별칭 유형과 원본 유형 간의 암시적 변환에서.

위 내용은 C의 유형 별칭에 대한 `typedef`와 `using`의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.