16.3.3 模板中的常量

模板参数并不局限于类定义的类型,可以使用编译器内置类型。这些参数值在编译期间变成模板的特定示例的常量。我们甚至可以对这些参数使用默认值。下面的例子允许我们在实例化时设置Array类的长度,并且还可以提供默认值。

16.3.3 模板中的常量 - 图1

16.3.3 模板中的常量 - 图2

如前所述,Array是被检查的对象数组,并且防止下标越界。类Holder很像Array,只是它有一个指向Array的指针,而不是指向类型Array的嵌入对象。该指针在构造函数中不被初始化,而是推迟到第一次访问时。这称为懒惰初始化(lazy initialization)。如果创造大量的对象,但不访问每一个对象,为了节省存储,可以用懒惰初始化技术。

注意,在这两个模板中,size值决不存放在类中,但对它的使用就如同是成员函数中的数据成员。