7

我一直在阅读这个词:

  1. 模板编程
  2. 泛型编程
  3. 元编程
  4. 也许另一个成语/术语..

对于任何使用模板的 c++ 代码,哪一个是正确或更准确的术语?

4

2 回答 2

15

AFAIK:

  1. 模板编程只是指经典的“使用模板编程”,即“我有一个函数/类,我想让它适用于任何类型,我就让它成为模板”。

    它也可以被视为“包罗万象”的类别,包括使用模板的任何编程技术。

  2. 泛型编程可以综合描述为 STL 使用的编程范式。

    维基百科将其定义为

    一种计算机编程风格,其中算法是根据待指定的类型编写的,然后在需要时为作为参数提供的特定类型实例化

    恕我直言,最好说所有容器都设计用于任何类型(不牺牲类型安全性),并且算法设计为足够通用以适用于任何容器类型(显然,只要使用它们是明智的,即对无序的容器进行排序是没有意义的)。

    请注意,泛型编程(具有此定义)并不严格要求使用模板,事实上它可以通过继承和动态多态性来实现(感谢 Ben Voigt)。

    一般来说,我会说模板编程泛型编程部分重叠,许多人可以互换使用泛型编程模板编程这两个术语。

  3. 模板元编程是一种编程风格,其中模板用于执行编译时计算/决策/检查,通常在没有模板的情况下无法实现(静态断言、编译时常量计算……)。

    Such code is often quite contrived, since C++ wasn't designed for this style of programming (which was actually "discovered" later), and may look unfamiliar to C++ programmers also because it often gets near to functional programming (without having nice syntax facilities for it) instead of following the imperative paradigm normally used in C++.

于 2010-12-19T15:43:49.007 回答
2

它通常被称为泛型编程

模板编程不同于正常使用模板,在 TMP 类型中是在编译时操作的(参见boost.Mpl)。

于 2010-12-19T15:34:47.140 回答