程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++模板限制實際應用方式探討

C++模板限制實際應用方式探討

編輯:C++入門知識

C++編程語言中的模板應用是一個非常重要的操作技巧。它的應用在很大程度上提高了編程人員程序開發效率。在這篇文章中,我們將會重點介紹一下有關C++模板限制的相關應用,方便大家理解。

1、浮點數不能作為 非類型模板參數 如:template <float /* or double */> class TT;

2、自定義類不能作為模板參數,這些自定義類也是 非類型模板參數。

  1. // 6-14-2009  
  2. #include <iostream> 
  3. using namespace std;  
  4. // #define FLOAT  
  5. // #define TEMPLATE_OBJECT  
  6. #define COMMON_OBJECT  
  7. #ifdef FLOAT  
  8. template <float f> 
  9. class TT;  
  10. #endif  
  11. #ifdef TEMPLATE_OBJECT  
  12. template < class T > 
  13. class TM {};  
  14. template < TM<int> c > 
  15. class TT;  
  16. #endif  
  17. #ifdef COMMON_OBJECT  
  18. class TN{};  
  19. template < TN c > 
  20. class TT;  
  21. #endif 

C++模板限制中還有一個,而且相當重要:

模板類或模板函數的聲明與定義必須位於同一個文件中!除非新一代的編譯器支持關鍵字export.

如果編譯器不支持export關鍵字,但我們又想把聲明與定義分開寫,那該如何操作呢?方法如下:

把模板聲明寫在.h中,模板定義寫在.cpp中,需要注意的是,我們並不像一般的文件包含那樣,在.cpp中包含.h,而是在main.cpp中,把這兩個東東包含進來如:

  1. // test.h  
  2. template <typename T> 
  3. class Test  
  4. {  
  5. public:  
  6. void print();  
  7. };  
  8. // test.cpp  
  9. template <typename T> 
  10. void Test<T>::print()  
  11. {  
  12. cout << "Successfully!" << endl;  
  13. }  
  14. // main.cpp  
  15. #include <iostream> 
  16. using namespace std;  
  17. #include "test.h"  
  18. #include "test.cpp"  
  19. int main()  
  20. {  
  21. Test<int> t;  
  22. t.print();  
  23. return 0;  

以上就是對C++模板限制的相關介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved