ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

《C++ Templates》深入模板基础(一)——模板参数问题(重点待补全)

2020-11-27 22:00:31  阅读:227  来源: 互联网

标签:Templates 初始化 CONT 函数 待补 参数 类型 模板


模板参数的问题:

对于模板参数的使用可以分为三大类:

1.类型参数;

2.非类型参数;

3.模板的模板参数;

 

针对于类型参数:

其实就是我们所最常使用的类类型,通常在模板参数列表中需要typenmae进行声明,往往是一个类或者某种类型;

可以说是最常见的一种;

 

针对于非类型参数:

之前提到过,例如典型的内置类型就是我们所需要的非类型参数;

通常来说,非类型参数往往有以下几种:

1.整型或者枚举类型;

2.指针类型:函数指针、普通对象指针、指向成员的指针;

3.引用类型:指向对象和函数的引用;

其中值得注意的是,对于非类型参数,我们常见的int是不需要在模板参数列表中加入typename,但是有一些依赖型函数则需要,这个要视情况而定,后面书中第九章会讲到这个;

 

当然函数和数组类型也可以当成非类型参数,但是其实是编译器和环境通过隐式转化而构成,这个需要注意一下;

 

针对于模板的模板参数:

个人认为这是一种很华而不实的东西,看了这么多例子也觉得很操蛋,完全可以分开写;

但是后来细细品了品,发现其实是在为不同的类内初始化做准备;

不妨考虑之前的那个模板的模板参数形式:

template <typename T, template<typename U,typename =std::allocator<U>> class CONT = vector > class A {
private:
	CONT<T,list<int>> A;
};

其中第二个参数模板给定了一个缺省参数模板CONT,其中CONT拥有两大初始化类型,U以及用于分配空间的allocator,其中allocator也采用U进行初始化;

多以可以大致看出,第二个参数模板主要是针对于匹配vector、map、list等STL的的类型,所以其实也是为了已知的类型服务;

所以模板的模板参数个人认为主要是为特殊的类定制化服务,而不是像普通模板进行内置或者函数类型、简单模板类类型传参;

标签:Templates,初始化,CONT,函数,待补,参数,类型,模板
来源: https://www.cnblogs.com/songlinxuan/p/14050559.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有