1
A
回答
2
在C++中,你必须重载功能的能力,例如:
void do_something(object1 ob);
void do_something(int i);
好,模板让你做出“通用”的功能,或采取任意类型的类。因此,不是每次添加类型都要定义一个函数,您可以定义一次,让编译器为您编写所有函数。
template<typename T>
void do_something(T arg);
使用类可以根据类型差异创建变体。我能想到的最好的例子是std :: vector ..你可以把它想象成一个容器/数组/任何任何东西。但是,你需要定义类型前期(所以它知道每个元素有多大,如何对各种元素等复印件):
std::vector<int> vector_of_ints;
std::vector<std::string> vector_of_strings;
...
因为正在发生的事情,实际上,是编译器编写附加功能对于你在编译时,不应该有任何运行效果。但是,在运行时可能会出现这个问题,如果你有太多的模板代码,这会导致代码膨胀,并且这可能导致执行缓存未命中......但在当今的硬件上,这应该不成问题。
我看到的主要缺点是,您必须将模板放在公开您的实现的头文件中。我也发现它们很难调试,因为它们可能会产生相当混乱的编译器错误消息。
0
总结了这一切:
如果你写一个函数add(INT A,INT B)?如果你的添加可以为所有的数据类型做它不是很好吗?不只是int而不需要做超过1个函数?这就是模板进入的地方。它们使得它只需要一个函数来封装多种类型。
这将是你怎么做的函数:这里
template<typename T>
T add(T a, T b);
相关问题
- 1. 什么是VerticalPanningRoot(C#Metro ScrollBar模板)
- 2. 什么是模板在C++ 2
- 3. “模仿”C++模板的C策略是什么?
- 4. 角模板中的问号是什么?
- 5. 什么是handlebars.js中的模板?
- 6. 什么是组件Angular2中的模板
- 7. Angular 2模板中的let *是什么?
- 8. 此模板中的类型是什么?
- 9. Sails JS:什么是layout.ejs中的模板?
- 10. C++模板中模板<typename T,T *>的含义是什么?
- 11. 什么是会员模板?
- 12. 约束模板是什么?
- 13. 什么是模板语言?
- 14. 模板,什么是编译
- 15. MSChart模板xml的模式是什么?
- 16. 模板类在C++中的用途是什么
- 17. Visual Basic.NET中C++模板的等价物是什么?
- 18. C++中成员模板函数的用法是什么?
- 19. C++模板Angle Brackets Pitfall - 什么是C++ 11修复?
- 20. 什么是LINQ to SQL模板?它的优点是什么?
- 21. 与C++的for_each模板相当的Java是什么?
- 22. extern模板是一个c + + 11扩展是什么意思?
- 23. 什么是使用模板的要点?
- 24. 这是什么样的模板?
- 25. 使用模板的优势是什么?
- 26. 什么是jQuery的首选模板库?
- 27. 模板类型的含义是什么?
- 28. 什么是堆栈的默认模板?
- 29. 什么是您的个人模板?
- 30. 什么是基于DOM的模板?
阅读文档http://www.cplusplus.com/doc/tutorial/templates/它有大量的例子。 – 2011-05-21 03:39:37
[这是一个专用于C++模板的FAQ页面](http://www.parashift.com/c++-faq-lite/templates.html)。 – 2011-05-21 03:40:17
我不明白为什么这个问题关闭了。他只是问“什么是模板,为什么/为什么不是一个好主意?”。 – Bingo 2011-05-21 03:54:38