设为首页 加入收藏

TOP

8.7.1 定义类模板(2)
2013-10-07 16:09:08 来源: 作者: 【 】 浏览:65
Tags:8.7.1 定义 模板

8.7.1  定义类模板(2)

看看第6章学过的函数模板语法。因为该函数模板是形参为T的类模板的成员,所以这里的函数模板定义应该有与类模板定义相同的形参。本例中只有一个形参T,但通常可能有好几个。如果类模板有两个或更多形参,则每个定义成员函数的模板也应该有同样多的形参。

注意,作用域解析运算符之前只能使用附带形参名称T的类模板名。这是必需的-- 形参对于识别出根据该模板生成的函数属于哪个类非常重要。类模板的类型是CSamples<T>,其中T是在创建类模板实例时指定的类型。在类模板中插入指定的类型,从而生成类定义。还将其插入函数模板中,从而生成本类中Max()函数的定义。每个根据类模板生成的类都需要有自己的Max()函数定义。

在类模板定义外部定义构造函数或析构函数与此类似。可以将接受样本数组的构造函数的定义写成下面的形式:

  1. template<class T> 
  2. CSamples<T> ::CSamples(const T values[], int count)  
  3. {  
  4. m_Free = count < maxSamples   count : maxSamples;  // Don't exceed the array  
  5. for(int i = 0; i < m_Free; i++)  
  6. m_Values[i] = values[i];                   // Store count number of samples  
  7. }  

我们以定义普通成员函数时使用的相同方式,在模板中指定构造函数属于哪个类。注意,构造函数名不要求形参说明-- 它只能是CSamples,但需要用类模板类型CSamples<T>加以限定。在作用域解析运算符之前只能使用附带形参名称的类模板名。

如果在类定义的外部已经实现了成员函数,它们就必须放在定义类模板的头文件中;它们不能放在.cpp文件中,因为在使用它们时编译器需要找到模板函数的完整实现代码。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇8.7.1 定义类模板(1) 下一篇8.7.2 根据类模板创建对象(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)