C++全局函数应用指南

最为一个经验丰富的编程人员来说,必须要牢固掌握好两个以上的编程语言,才能真正满足工作中的需求。而C++语言就是其中一个必要的选择。我们在这里可以通过对C++全局函数的基本概念有一个详细的了解。

特别注意:类,全局函数,类的成员函数都可以特化,但是只有类可以半特化,C++全局函数和类的成员函数不可以半特化。

1 类的特化和类成员函数的特化

 
 
 
  1. template< typename T> 
  2. class Widget1  
  3. {  
  4. public:  
  5. void Fun1()  
  6. {  
  7. //generic implementation  
  8. }  
  9. };  
  10. template< > 
  11. class Widget1< int> 
  12. {  
  13. public:  
  14. void Fun1()  
  15. {  
  16. }  
  17. };  
  18. template< >   
  19. void Widget1< char>::Fun1()  
  20. {  
  21. //specialization  
  22. }  
  23. void main()  
  24. {   
  25. Widget1< char> w;  
  26. w.Fun1();  
  27. Widget1< int> w2;  
  28. w2.Fun1();  

2 C++全局函数的特化和重载

 
 
 
  1. template< typename T1, typename T2> 
  2. T1 Fun2(T2)  
  3. {  

下面2个应该是属于重载

 
 
 
  1. template< typename T2> 
  2. char Fun2(T2)  
  3. {  
  4. char c;  
  5. return c;  
  6. }  
  7. template< typename T1> 
  8. T1 Fun2(char)  
  9. {  

C++全局函数的特化

 
 
 
  1. template< > 
  2. char Fun2< char,int>(int)  
  3. {  
  4. char c;  
  5. return c;  
  6. }  
  7. int main()  
  8. {  

3 C++全局函数不能半特化,以下编译失败

 
 
 
  1. template < typename T1,typename T2> //原型1  
  2. void Test(T1,T2)  
  3. {  
  4. }  
  5. template < typename T1> 
  6. void Test< T1,T1>(T1,T1)  
  7. {  
  8. }  
  9. template< typename T1, typename T2> //原型2  
  10. T1 Fun2(T2)  
  11. {  
  12. }  
  13. //  
  14. template< typename T2> 
  15. int Fun2< int,T2>(T2)  
  16. {  
  17. }  
  18. template< typename T1> 
  19. T1 Fun2< T1,int>(int)  
  20. {  
  21. }  
  22. template< typename T> 
  23. T Fun2< T,T>(T)  
  24. {  
  25. }  
  26. int main()  
  27. {  

4 类可以特化和半特化,但是特的成员函数像C++全局函数一样,只能特化,不能半特化,

 
 
 
  1. template< typename T1, typename T2> struct Widget2  
  2. {  
  3. void Fun2()  
  4. {  
  5. //generic implementation  
  6. }  
  7. };  
  8. template< typename T2>   
  9. struct Widget2< char,T2> 
  10. {  
  11. void Fun2()  
  12. {  
  13. }  
  14. };  
  15. template< typename T2> 
  16. struct widget2  
  17. {  
  18. void Fun2()  
  19. {  
  20. // class partial specialization  
  21. }  
  22. };  
  23. //the class member funtion can not be partial specialization 

以下的成员函数半特化,编译失败

 
 
 
  1. template< typename T2> 
  2. void Widget2< char, T2>::Fun2()  
  3. {  
  4. //class member function partial specialization  
  5. }  
  6. int main()  
  7. {  

C++全局函数相关内容就为大家介绍到这里。

网页题目:C++全局函数应用指南
新闻来源:http://www.shufengxianlan.com/qtweb/news45/362345.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联