<C++学习笔记>函数模板 template
2014-10-16 19:52
716 查看
//如果需要多个将同一种算法用于不同类型的函数,使用模板
//模板放在头文件中,在需要使用模板的文件中包含头文件
template < typename AnyType >//定义一个模板 typename可以用class代替
void Swap( AnyType &a, AnyType &b )
{//交换两个AnyType值
AnyType temp;
temp = a;
a = b;
b = temp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 1;
int b = 2;
Swap( a, b );
cout<<a<<"\t"<<b<<endl;
string strK = "aaaa";
string strM = "bbbb";
Swap( strK, strM );
cout<<strK<<"\t"<<strM<<endl;
system("pause");
return 0;
}
//非模板函数 模板函数 显示具体化
//优先级:非模板函数>显示具体化>模板函数
非模板函数:
void Swap( int &, int & );
模板函数:
template < typename AnyType >
void Swap( AnyType &, AnyType & );
显示具体化:
template < typename AnyType >
template <> void Swap < int >( int&, int& )//显示具体化 -->不使用Swap()模板来生成函数定义,而应使用专门为float类型显式地定义的函数定义
{
return ;
}
显式实例化
template void Swap< int >( int&, int& ) //显示实例化 -->使用Swap()模板生成一个使用int类型的实例
//模板放在头文件中,在需要使用模板的文件中包含头文件
template < typename AnyType >//定义一个模板 typename可以用class代替
void Swap( AnyType &a, AnyType &b )
{//交换两个AnyType值
AnyType temp;
temp = a;
a = b;
b = temp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 1;
int b = 2;
Swap( a, b );
cout<<a<<"\t"<<b<<endl;
string strK = "aaaa";
string strM = "bbbb";
Swap( strK, strM );
cout<<strK<<"\t"<<strM<<endl;
system("pause");
return 0;
}
//非模板函数 模板函数 显示具体化
//优先级:非模板函数>显示具体化>模板函数
非模板函数:
void Swap( int &, int & );
模板函数:
template < typename AnyType >
void Swap( AnyType &, AnyType & );
显示具体化:
template < typename AnyType >
template <> void Swap < int >( int&, int& )//显示具体化 -->不使用Swap()模板来生成函数定义,而应使用专门为float类型显式地定义的函数定义
{
return ;
}
显式实例化
template void Swap< int >( int&, int& ) //显示实例化 -->使用Swap()模板生成一个使用int类型的实例
相关文章推荐
- <<c++ primer>> 函数指针的笔记
- <C++学习笔记>预处理功能
- <C++学习笔记一>——多继承
- <C++学习笔记>引用中的&和&&区别
- <<Git Community Book中文版>>学习笔记
- <Effective C++: 习惯C++> 笔记
- <<Effective C++>>笔记5
- <<Effective C++>>笔记1
- <<Practical Common Lisp>> 学习笔记一
- <类模板 的 成员函数的特化>及<类 的 成员模板函数的特化>
- PostgreSQL学习笔记7之函数和操作符<三>
- <<C语言深度剖析>>学习笔记之三:符号
- C++学习笔记之对文件的操作<1>
- <kingofark关于学习C++和编程的50个观点> 详解 - 预览版
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- C++中template<class T> && template <typename T>(模板区分)
- <<C语言深度剖析>>学习笔记之一:C语言中32个关键字
- <<Effecitve C++>>笔记2
- 关于c++中模板 T 无法限制的替代方案template< T extends Base>
- c++ standard library 学习笔记-auto_ptr<T> 注意事项