멤버 함수 템플릿
용어 멤버 템플릿 멤버 함수 템플릿은 중첩 된 클래스 템플릿을 참조합니다.멤버 함수 템플릿 클래스 또는 템플릿 클래스의 멤버 템플릿 함수입니다.자세한 내용은 클래스 템플릿은 중첩.
멤버 함수에는 함수 템플릿은 여러 상황에서 될 수 있습니다.템플릿 클래스의 모든 함수 제네릭 이지만에 멤버 템플릿 또는 멤버 함수 템플릿 이라고 하지.이러한 멤버 함수는 고유한 템플릿 인수를 사용 하는 경우 멤버 함수 템플릿을 수 간주 됩니다.자세한 내용은 템플릿 클래스의 멤버 함수.
예제
비템플릿 기반 또는 템플릿 클래스의 멤버 함수 템플릿 함수가 템플릿 템플릿 매개 변수를 선언 합니다.
// member_function_templates.cpp
struct X
{
template <class T> void mf(T* t) {}
};
int main()
{
int i;
X* x = new X();
x->mf(&i);
}
다음 예제는 멤버를 보여 줍니다. 함수 템플릿은 템플릿 클래스입니다.
// member_function_templates2.cpp
template<typename T>
class X
{
public:
template<typename U>
void mf(const U &u)
{
}
};
int main()
{
}
또한 Visual Studio 있습니다.NET 2003 이후 버전에서 멤버 템플릿 클래스 외부에 정의할 수 있습니다.
// defining_member_templates_outside_class.cpp
template<typename T>
class X
{
public:
template<typename U>
void mf(const U &u);
};
template<typename T> template <typename U>
void X<T>::mf(const U &u)
{
}
int main()
{
}
지역 클래스는 멤버 템플릿을 가질 수 없습니다.
멤버 템플릿 함수는 가상 함수가 될 수 없습니다 및 이름이 같은 기본 클래스 가상 함수를 선언 하는 경우 기본 클래스의 가상 함수를 재정의할 수 없습니다.
Visual C++입니다.NET 2003 템플릿 기반 사용자 정의 변환에 대 한 지원이 도입 되었습니다.다음 샘플은 Visual C++에서 작동합니다.NET 2003 표준에 지정 된 대로 됩니다.
// templated_user_defined_conversions.cpp
template <class T>
struct S
{
template <class U> operator S<U>()
{
return S<U>();
}
};
int main()
{
S<int> s1;
S<long> s2 = s1; // Convert s1 using UDC and copy constructs S<long>.
}