目录

1. 非类型模板参数

2. 模板的特化

2.1 概念 

2.2 函数模板特化 

 2.3 类模板特化

2.3.1 全特化

2.3.2 偏特化

2.3.3 类模板特化应用示例

3 模板分离编译

3.1 什么是分离编译

3.2 模板的分离编译

​3.3 解决方法

 4. 模板总结

5. 代码 


1. 非类型模板参数

 模拟参数分类类型形参与非类型形参。

类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。

非类型参数,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。

宏和非类型模板参数的对比:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
#define N 20
template<class T>
class Stack
{
public:

private:
	T _a[N];
	int top;
};
int main()
{
	Stack<int> st1;
	Stack<int> st2;
	//那么这里就有一个问题,如果我st1想开10个大小的空间,st2开20个大小的空间
	//这里用宏的话就不是自己想要的结果,就和重定义数据类型一样,一个栈要存int
	//另一个栈要存double类型也搞不定
	return 0;
}

那么这个时候加一个非类型模板参数就好了。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部