제네릭 함수(C++/CLI)
함수가 제네릭 형식 매개 변수가 선언 된 함수가입니다.호출 하는 경우 실제 형식은 형식 매개 변수 대신 사용 됩니다.
모든 플랫폼
설명
이 기능은 모든 플랫폼에 적용 되지 않습니다.
Windows 런타임
설명
이 기능을 지원 하지 않습니다는 Windows 런타임.
요구 사항
컴파일러 옵션:/ZW
공용 언어 런타임
함수가 제네릭 형식 매개 변수가 선언 된 함수가입니다.호출 하는 경우 실제 형식은 형식 매개 변수 대신 사용 됩니다.
구문
[attributes] [modifiers]
return-type identifier <type-parameter identifier(s)>
[type-parameter-constraints clauses]
([formal-parameters])
{
function-body
}
매개 변수
특성 (선택 사항)
추가 선언 정보입니다.특성 및 특성 클래스에 대 한 자세한 내용은 특성을 참조 하십시오.한정자 (선택 사항)
St 등의 함수에 대 한 한정자atic. virtual가상 메서드를 제네릭 될 수 있기 때문에 허용 되지 않습니다.반환 형식
메서드에서 반환하는 형식입니다.반환 값이 없는 반환 형식이 void 인 경우입니다.identifier
함수 이름형식 매개 변수 식별자
쉼표로 구분 된 식별자 목록입니다.형식 매개 변수 (선택 사항)
매개 변수 목록입니다.형식 매개 변수의 제약 조건 절
이 제한 형식 인수로 사용할 수 있는 형식에 지정 하며 지정 된 제네릭 형식 매개 변수에 대한 제약 조건(C++/CLI).함수 본문
본문 메서드의 형식 매개 변수 식별자를 참조할 수도 있습니다.
설명
제네릭 함수는 제네릭 형식 매개 변수로 선언 하는 함수입니다.이러한 메서드를 클래스 또는 구조체 또는 독립 실행형 함수를 수 있습니다.단일 제네릭 선언 패밀리의 다른 실제 형식의 제네릭 형식 매개 변수에 대 한 대체만 다른 함수를 암시적으로 선언 합니다.
Visual C++, 제네릭 형식 매개 변수가 있는 클래스 또는 구조체의 생성자를 선언할 수 없습니다.
호출 하는 경우 제네릭 형식 매개 변수가 실제 형식으로 대체 됩니다.실제 형식에 꺾쇠 괄호는 템플릿 함수 호출과 유사한 구문을 사용 하 여 명시적으로 지정할 수 있습니다.유형 매개 변수 없이 호출 되 면 컴파일러에서 함수 호출에 제공 된 매개 변수가 실제 형식 추론 하려고 시도 합니다.사용 된 매개 변수에서 의도 된 형식 인수를 추론할 수 없으면 컴파일러에서 오류를 보고 합니다.
요구 사항
컴파일러 옵션:/clr
예제
예제
다음 코드 예제에서는 제네릭 함수를 보여 줍니다.
// generics_generic_function_1.cpp
// compile with: /clr
generic <typename ItemType>
void G(int i) {}
ref struct A {
generic <typename ItemType>
void G(ItemType) {}
generic <typename ItemType>
static void H(int i) {}
};
int main() {
A myObject;
// generic function call
myObject.G<int>(10);
// generic function call with type parameters deduced
myObject.G(10);
// static generic function call
A::H<int>(10);
// global generic function call
G<int>(10);
}
예제
서명 또는 인자, 함수에서 형식 매개 변수의 수에 따라 제네릭 함수를 오버 로드할 수 있습니다.또한 일부 형식 매개 변수를 함수를 다르게 제네릭 함수 이름이 같은 제네릭이 아닌 함수를 오버 로드할 수 있습니다.예를 들어, 다음 함수 오버 로드할 수 있습니다.
// generics_generic_function_2.cpp
// compile with: /clr /c
ref struct MyClass {
void MyMythod(int i) {}
generic <class T>
void MyMythod(int i) {}
generic <class T, class V>
void MyMythod(int i) {}
};
예제
다음 예제에서는 배열에서 첫 번째 요소를 찾는 제네릭 함수를 사용 합니다.선언한 MyClass, 기본 클래스에서 상속 되는 MyBaseClass.MyClass제네릭 함수를 포함 MyFunction, 다른 제네릭 함수를 호출 하는 MyBaseClassFunction, 내 기본 클래스입니다.주, 일반 함수, MyFunction, 다른 형식 인수를 사용 하 여 호출 됩니다.
// generics_generic_function_3.cpp
// compile with: /clr
using namespace System;
ref class MyBaseClass {
protected:
generic <class ItemType>
ItemType MyBaseClassFunction(ItemType item) {
return item;
}
};
ref class MyClass: public MyBaseClass {
public:
generic <class ItemType>
ItemType MyFunction(ItemType item) {
return MyBaseClass::MyBaseClassFunction<ItemType>(item);
}
};
int main() {
MyClass^ myObj = gcnew MyClass();
// Call MyFunction using an int.
Console::WriteLine("My function returned an int: {0}",
myObj->MyFunction<int>(2003));
// Call MyFunction using a string.
Console::WriteLine("My function returned a string: {0}",
myObj->MyFunction<String^>("Hello generic functions!"));
}
Output