c++에서 type:name 과 class 의 차이 점 소개

1144 단어 typenameclass
C++를 배 우 는 사람 은 class 라 는 키 워드 를 잘 알 고 있 습 니 다.class 는 클래스 를 정의 하 는 데 사 용 됩 니 다.템 플 릿 에 c++를 도입 한 후 템 플 릿 을 최초 로 정의 하 는 방법 은 template입 니 다.
여기 서 class 키 워드 는 T 가 하나의 유형 임 을 나타 내 고 나중에 class 가 이 두 곳 에서 사용 하 는 것 이 헷 갈 리 지 않도록 type:name 이라는 키 워드 를 도입 했다.그것 의 역할 은 class 와 마찬가지 로 뒤의 기 호 를 하나의 유형 으로 표시 합 니 다.그러면 템 플 릿 을 정의 할 때 아래 의 방식 을 사용 할 수 있 습 니 다.template...
템 플 릿 정의 문법 에서 키워드 class 는 type:name 의 역할 과 똑 같 습 니 다.
type:name 은 템 플 릿 정의 에서 만 작 동 합 니까?사실은 그렇지 않 습 니 다.type:name 의 다른 역할 은 내장 의존 형식(nested depended name)을 사용 하 는 것 입 니 다.다음 과 같 습 니 다.

class MyArray
{
public:
    typedef int LengthType;
    .....
}

template<class T>
void MyMethod( T myarr )
{
    typedef typename T::LengthType LengthType;
    LengthType length = myarr.GetLength;
}

이때 type name 의 역할 은 c++컴 파일 러 에 게 알려 주 는 것 입 니 다.type name 뒤의 문자열 은 구성원 함수 나 구성원 변수 가 아 닌 유형 이름 입 니 다.이 럴 때 앞 에 type name 이 없 으 면 컴 파일 러 는 T:LengthType 이 하나의 유형 인지 구성원 이름(정적 데이터 구성원 또는 정적 함수)인지 알 방법 이 없습니다.그래서 컴 파일 은 통과 할 수 없습니다.

좋은 웹페이지 즐겨찾기