C++ Template学习笔记之函数模板(6)——模板显式特化
来源:互联网 发布:淘宝返利机器人 编辑:程序博客网 时间:2024/05/17 02:02
我们并不总是能够写出对所有可能被实例化的类型都是最合适的函数模板。在某些情况下,我们可能想利用类型的某些特性,来编写一些比模板实例化的函数更高效的函数。在有些时候,一般性的模板定义对于某种类型来说并不适用,这时我们必须为函数模板实例化提供特化的定义。
在模板显式特化定义(explicit specialization definition)中,先是关键字template和一对尖括号<>,然后是函数模板特化的定义。该定义指出了模板名、被用来特化模板的模板实参,以及函数参数表和函数体。如:
// max.h
template <class Type>
Type Max(Type t1,Type t2)
{
return (t1>t2 ? t1 : t2);
}
// const char*显式特化:覆盖了来自通用模板定义的实例
typedef const char *PCC;
template<> PCC Max< PCC >( PCC s1, PCC s2 )
{
return (strcmp(s1,s2)>0 ? s1 :s2);
}
// user.c
int main()
{
// 调用实例:int Max< int >( int, int );
int i = Max( 10, 5 );
// 调用显式特化:const char* Max< const char* >( const char*, const char* );
const char *p = Max( "hello", "world" );
cout<<"i: "<<i<<" "<<"p: "<<p<<endl;
return 0;
}
- C++ Template学习笔记之函数模板(6)——模板显式特化
- C++ Template学习笔记之函数模板(6)——模板显式特化
- C++ Template学习笔记之函数模板(1)——函数模板定义
- C++ Template学习笔记之函数模板(7)——重载函数模板
- C++ Template学习笔记之函数模板(1)——函数模板定义
- C++ Template学习笔记之函数模板(7)——重载函数模板
- C++ Template学习笔记之函数模板(4)——显式模板实参
- C++ Template学习笔记之函数模板(4)——显式模板实参
- C++ Template学习笔记之函数模板(3)——模板实参推演
- C++ Template学习笔记之函数模板(5)——模板编译模式
- C++ Template学习笔记之函数模板(3)——模板实参推演
- C++ Template学习笔记之函数模板(5)——模板编译模式
- C++ Template学习笔记之函数模板(2)——函数模板实例化
- C++ Template学习笔记之函数模板(2)——函数模板实例化
- C++ template学习笔记之模板特化
- [转]C++ Template学习笔记之函数模板(5)——模板编译模式
- C++Template学习笔记之函数模板
- 模板显式特化之template<>语法
- 浅析3ds max脚本
- 当你遇到以下十种人一定要珍惜
- ASP.NET 调味品:AJAX
- 几个比较好的Java代码查询网站
- Linux操作系统之系统术语简介
- C++ Template学习笔记之函数模板(6)——模板显式特化
- ADO.NET for the Object-Oriented Programmer – Part One
- 上班族"黑话"辞典大曝光
- An API for Google Image Search
- Building COM Servers in .NET
- PHP下对缓冲区的控制
- A Raw Serializer
- 使用ADO追加数据时需调用Refresh
- 关于TrackBack Ping