使用模板的缺点是什么
What is the downside of using templates?
可能重复:
使用模板的缺点是什么?
通过阅读模板,我发现,例如,如果你不使用类模板中的函数,它就不会为此生成代码(这是一件积极的事情(。我还看到,您可以使用模板使用编译时编程并实现,比如说一个阶乘示例,结果将在编译时知道
所以我的问题是:使用模板有哪些负面影响?
谢谢。
编译时间。复杂的,尤其是递归模板可能需要的时间才能编译。
错误消息。模板错误消息很可怕,通常没有太大帮助。概念本来会很棒,但遗憾的是,语言委员会已经将它们从即将发布的标准中删除了。
可读性。模板代码可能很难阅读。
难度许多潜在的技巧都依赖于语言标准中不太为人所知的方面,因此需要对语言有足够的了解才能与之相处。
为了让客户端使用您开发的模板,您必须交付源代码。这可能是我在实践中遇到的最严重的缺点。
- 更长的编译时间
- 较难读取的编译器错误消息
不能使类中的模板成员函数成为虚拟的。即:
class Foo{
public:
template<typename T>
void doSomething(const T& aThing);
virtual void somethingElse();
//rest of class
};
class Bar : public Foo{
public:
template<typename T>
void doSomething(const T& aThing);
virtual void somethingElse();
};
Foo* var = new Bar();
var->doSomething(1); //will call Foo's method, not Bar.
var->somethingElse(); //will call Bar's method. It's polymorphic.
这经常给程序员带来问题。
- 语法令人生畏
- 调试从模板生成的代码并不容易
- 您必须在标题中提供所有代码。没有知识产权
它们可能会随着模板嵌套深度的增加而成倍地增加可执行文件的大小。
它们可能会成倍地增加编译时间。
编译器消息可能很难理解。
-
通常不可能在调试器的监视窗口中破译类型,因为它们大约有一千个字符长。因此,你在调试器中遇到了一个断点,打开观察窗口检查地图,在"类型"列中,你会收到一堆完全无法加密的文本。
-
过度杀伤的可能性。这就是对所有事情都使用模板!但这是留给程序员来决定的。我只是说我见过程序员什么都用它。
相关文章:
- 使用rdtsc进行基准测试的缺点是什么
- 将字段(在类中)定义为引用的缺点是什么?
- 嵌套向量的缺点是什么?
- 模板而不是接口的缺点是什么?(C++)
- 在C 项目中剩下未使用的类的缺点是什么?
- 在64位系统上创建一个非常大的数组的缺点是什么
- C++协方差返回类型的缺点是什么
- 在将GITHUB库包含在您的项目中之前,汇编GitHub库的优点 /缺点是什么?
- 单源项目结构的缺点是什么?
- 仅使用UDP托管小型服务器应用程序的缺点是什么
- 抛弃灾难的例外 - 缺点是什么
- 使用继承来减少重复代码的缺点是什么
- 以不同方式实现可变参数构造函数的模板类:每个版本的优点和缺点是什么
- 如果使单一实例构造函数受到保护,缺点是什么 - 继承 - C++11.
- 为C++提供标准GUI库的缺点是什么
- 如何访问类变量?公共方法/getters与继承.优点和缺点是什么
- 对所有异常使用一个基类的缺点是什么?
- 使用AVL树的缺点是什么?
- "upcasting"的缺点是什么?
- OpenGL函数在命名空间gl中的缺点是什么?