佳恒计算机教育培训中心
<模板形参表声明>是由一个或多个模板形参组成;与一般的类声明的不同之处在于,这里的<类声明>要用<模板形参表声明>中声明的虚拟类型参数来修饰它的某些成员,使模板类独立于任何具体的数据类型。
在模板外对成员函数的声明格式是:template<模板形参表声明>?返回类型?类名?<模板形参表>::函数名(函数形参表)?函数体?其中模板形参表就是由模板形参表声明中声明的参数名组成的序列。
应注意,类模板的成员函数都是模板函数,因此在模板外声明成员函数的格式与声明普通模板函数十分相似。 用类模板定义对象的格式是:类名<模板实参表>?对象名;或?类名<模板实参表>?对象名?(构造函数实参表); 在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。
类模板实例所生成的每一个类定义就是相应类模板的一个实例。
在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。但是,可以为类模板的参数设置默认值。具体地说,在定义类模板时,可以为模板形参表声明的最后若干个参数设置默认值;而这些有默认值的参数中,最后的若干个对应实参可以在定义对象时省略。 2.类模板的派生与继承
一谈到继承总涉及到两个类:基类和派生类,它们中任何一个都有可能是模板类,或模板类的实例。下面列出常见的几种情况。
(1)普通类继承类模板的一个实例。可以通过继承类模板的一个实例来声明一个类。
(2)模板类继承普通类。在声明一个类模板时,应尽可能将类模板中与虚拟类型参数无关的成员剥离出来,构成一个普通类,作为类模板的基类。因此,类模板继承普通类的情况是十分常见的。 (3)模板类继承模板类。可以通过继承一个模板类来声明一个类模板。
(4)模板类继承模板参数给出的基类。模板的派生甚至可以继承一个未知的基类。也就是说,继承哪个基类由模板参数决定。
主讲教师:刘老师 咨询辅导答疑:QQ(30724125)