C++中的“动态模板”习语,是否有这样的标准名称?
问题描述:
我想要一个带有值参数的模板,除了在运行时不知道该值。例如,实现整数模数n。下面是一些粗糙的C++伪代码:C++中的“动态模板”习语,是否有这样的标准名称?
class zmodn
{
int v; // the value, 0 <= v < n, n below
zmodn (int v_) : v(v_) { }
bool operator == (const zmodn &b) const { return v == b.v; }
...
};
class zmodn_dyntmpl
{
int n;
zmodn_dyntmpl (int n_) : n(n_) { }
zmodn create (int v_) { return new zmodn (v % n); }
zmodn add (zmodn a, zmodn b) { return zmodn ((a.v + b.v) % n); }
...
};
这里,类zmodn_dyntmpl
基本上代表动态或运行时的模板。以同样的方式实例化一个模板给一个类,实例化它给出一个“动态类”,其“实例”是zmodn
类型的对象。
我的问题是,这个成语是否有一个标准名称?代表动态模板及其实例的类的正确名称是什么?
答
以同样的方式实例化一个模板给出了一个类,实例化它提供了一个“动态类”,其“实例”是类型zmodn的对象。
符合此描述的标准模式称为工厂。
答
是的,它被称为普通类。
模板是模板,因为它们是“代码模板”,它们只存在于编译时。
除了在调用'zmodn'的构造函数之前完成计算之外,它看起来像一个“表达式模板”思想的开始。 – Flexo
http://www.angelikalanger.com/Articles/Cuj/ExpressionTemplates/ExpressionTemplates.htm – Flexo