您的位置:首页 > 编程语言 > C语言/C++

C++模板常用使用方法介绍

2012-06-28 16:48 691 查看
我们在这篇文章中为大家总结了一些C++模板的常用方法,比如C++模板类静态成员;C++模板类偏特化;类模版+函数模版等。
AD:

C++编程语言中的模板应用在一定程度上大大提高了程序开发的效率。我们在这篇文章中为大家详细讲解一下有关C++模板的基本概念,希望初学者们可以通过本文介绍的内容充分掌握这方面的知识。

前段时间重新学习C++,主要看C++编程思想和C++设计新思维。对模版的使用有了更进一层的了解,特总结如下:

下面列出了C++模板的常用情况:

1. C++模板类静态成员

template < typename T> struct testClass   
{   
static int _data;   
};   
template< > int testClass< char>::_data = 1;   
template< > int testClass< long>::_data = 2;   
int main( void ) {   
cout < <  boolalpha < <  (1==testClass< char>::_data) < <  endl;   
cout < <  boolalpha < <  (2==testClass< long>::_data) < <  endl;   
}  

2. C++模板类偏特化

template < class I, class O> struct testClass   
{   
testClass() { cout < <  "I, O" < <  endl; }   
};   
template < class T> struct testClass< T*, T*>   
{   
testClass() { cout < <  "T*, T*" < <  endl; }   
};   
template < class T> struct testClass< const T*, T*>   
{   
testClass() { cout < <  "const T*, T*" < <  endl; }   
};   
int main( void )   
{   
testClass< int, char> obj1;   
testClass< int*, int*> obj2;   
testClass< const int*, int*> obj3;   


3.类模版+函数模版

template < class T> struct testClass   
{   
void swap( testClass< T>& ) { cout < <  "swap()" < <  endl; }   
};   
template < class T> inline void swap( testClass< T>& x, 
testClass< T>& y )   
{   
x.swap( y );   
}   
int main( void )  
{   
testClass< int> obj1;   
testClass< int> obj2;   
swap( obj1, obj2 );   


4. 类成员函数模板

struct testClass  
{   
template < class T> void mfun( const T& t )  
{   
cout < <  t < <  endl;   
}   
template < class T> operator T()   
{   
return T();   
}   
};   
int main( void )   
{   
testClass obj;   
obj.mfun( 1 );   
int i = obj;   
cout < <  i < <  endl;   


5. 缺省C++模板参数推导

template < class T> struct test   
{   
T a;   
};   
template < class I, class O=test< I> > struct testClass   
{   
I b;   
O c;   
};   
void main()  
{  


6. 非类型C++模板参数

template < class T, int n> struct testClass {   
T _t;   
testClass() : _t(n) {   
}   
};   
int main( void ) {   
testClass< int,1> obj1;   
testClass< int,2> obj2;   


7. 空模板参数

template < class T> struct testClass;   
template < class T> bool operator==( const testClass< T>&, 
const testClass< T>& )   
{   
return false;   
};   
template < class T> struct testClass   
{   
friend bool operator== < >
( const testClass&, const testClass& );   
};   
void main()  
{  


8. template template 类

struct Widget1   
{   
template< typename T>   
T foo(){}   
};   
template< template< class T>class X>   
struct Widget2  
{   
};   
void main()  
{  
cout< <  3 < <  '\n';  


以上就是对C++模板的一些常用方法的介绍。

【编辑推荐】

C++存储区域基础概念详解

C++ typedef使用方法总结

C++调用C链接库具体应用技巧讲解

C++类成员相关应用方法介绍

C++循环语句基本概念详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息