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. C++字符串分割函数具体使用方法总结
  2. C++异常传递三种不同方式介绍
  3. C++多线程代码范例剖析
  4. C++获得系统时间不同方案介绍
  5. C++静态成员函数基本概念讲解
责任编辑:曹凯 来源: 博客园
相关推荐

2010-02-03 10:11:17

C++动态数组

2010-02-04 13:39:44

C++数组参数

2010-02-03 16:29:19

C++ sizeof

2010-02-06 17:09:29

C++文件拷贝

2010-02-01 17:09:07

C++链表操作

2010-02-05 16:46:58

C++ TinyXml

2010-02-06 17:39:52

C++ strtok

2010-03-26 16:17:24

Python嵌入

2010-02-05 17:58:32

C++链栈模板

2010-02-06 16:39:45

C++ assert(

2010-02-06 16:21:35

C++常规DLL

2010-02-03 15:27:26

C++ static

2010-02-04 14:29:45

C++ typenam

2010-02-04 13:45:36

C++类模板

2010-02-02 13:20:33

C++对象传递

2009-11-06 14:26:42

无线局域网

2011-04-11 09:47:50

C++内存管理

2010-02-03 10:50:33

C++多态

2011-05-23 09:59:04

网络综合布线系统布线

2010-02-05 14:12:46

C++声明放置
点赞
收藏

51CTO技术栈公众号