我正在阅读本书,C++模板:完整指南。在一个对我卡住了无法理解的术语,这里是第:C++模板中的一些混淆
一个基本原则是,任何模板参数必须是可以在编译时确定的 数量或价值。随着后来变得更清晰,这个要求转化为模板实体的运行时成本的巨大收益。 由于模板参数 最终被编译时值替代,所以它们本身可以使用 来形成编译时表达式。这在ArrayInClass模板 中被利用来调整成员数组数组的大小。数组 的大小必须是所谓的常量表达式,并且参数N的模板同样适用。
我们可以把这种推理远一点:因为模板 参数是编译时的实体,它们也可以被用来创建 有效模板参数。下面是一个例子:
template <typename T>
class Dozen {
public:
ArrayInClass<T,12> contents;
};
注意如何在这个例子中,名字T是两个模板参数和 模板参数。因此,可以使用一种机制来构建更简单模板的更复杂的模板。当然, 这与我们的 组装类型和功能的机制没有根本的不同。
我无法理解任何东西。我非常感谢任何帮助我们提供简单而理解的文字。
编辑:
Arrayinclass:
template <typename T, int N>
class ArrayInClass {
public:
T array[N];
};
你不明白哪个特定部分?你了解代码片段吗? –
@Oli,我了解代码,但无法理解粗体段落。 –
你可以缩小你不明白的东西吗?这是一个大而复杂的话题。 – Kevin