C++의 템플릿 전문화와 템플릿 부분 전문화?

WBOY
풀어 주다: 2024-05-08 17:33:01
원래의
784명이 탐색했습니다.

템플릿 특수화와 부분 특수화는 C++의 고유한 메커니즘입니다. 템플릿 특수화는 특정 유형의 템플릿 매개변수에 대한 특정 구현을 제공하는 반면, 템플릿 부분 특수화는 일부 템플릿 매개변수를 기반으로 템플릿을 유형화하여 더욱 유연하게 사용할 수 있도록 해줍니다. 템플릿 특수화는 template 구문을 사용하는 반면, 템플릿 부분 특수화는 template class MyClass

C++의 템플릿 전문화와 템플릿 부분 전문화?

C++의 템플릿 특수화 및 템플릿 부분 특수화

템플릿 특수화

템플릿 특수화는 특정 유형의 템플릿 매개변수에 대한 특정 템플릿 구현을 명시적으로 제공하는 것을 의미합니다. 구문은 다음과 같습니다.

template <> class MyClass { // 特化代码 };
로그인 후 복사

예:

template  class MyClass { T value; public: MyClass(T v) : value(v) {} T getValue() { return value; } }; template <> class MyClass { int value; public: MyClass(int v) : value(v) {} int getValue() { return value * 2; } }; int main() { MyClass strObj("Hello"); cout << strObj.getValue() << endl; MyClass intObj(5); cout << intObj.getValue() << endl; }
로그인 후 복사

출력:

Hello 10
로그인 후 복사

템플릿 부분 특수화

템플릿 부분 특수화는 템플릿의 일부를 기반으로 형식을 지정할 수 있는 특수 템플릿 특수화입니다. 템플릿 매개변수 . 구문은 다음과 같습니다.

template  class MyClass { // ... }; template  class MyClass { // 偏特化代码 };
로그인 후 복사

예:

template  class MyClass { T value1; U value2; public: MyClass(T v1, U v2) : value1(v1), value2(v2) {} T getValue1() { return value1; } U getValue2() { return value2; } }; template  class MyClass { public: MyClass(T v) : value1(v), value2(v) {} T getValue1() { return value1; } T getValue2() { return value2; } }; int main() { MyClass strIntObj("Hello", 5); cout << strIntObj.getValue1() << ", " << strIntObj.getValue2() << endl; MyClass intObj(10); cout << intObj.getValue1() << ", " << intObj.getValue2() << endl; }
로그인 후 복사

출력:

Hello, 5 10, 10
로그인 후 복사

위 내용은 C++의 템플릿 전문화와 템플릿 부분 전문화?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!