【C++初阶11

您所在的位置:网站首页 声明模板的格式 【C++初阶11

【C++初阶11

2023-05-17 21:57| 来源: 网络整理| 查看: 265

今天,带来模版进阶的讲解。 主要讲解:

非类型模版参数模版的特化模版的分离编译

文中不足错漏之处望请斧正!

非类型模版参数

模版参数分为类型模版参数和非类型模版参数。

可以这么理解:前者是为了泛化类型,后者给定了实际类型,更像是给类模板所有实例用的一个常量。

也有这样的要求:浮点数、类对象以及字符串是不允许作为非类型模板参数的。基本上就是用整形家族来当非类型模版参数。

声明格式 template class vector {}; 见见猪跑 template class vector { public: private: T _arr[N]; //大小是静态的数组 }; 模版的特化

模版的特化就是模板的特殊实例。

为什么

模板再神通广大也并不能用在所有场景吧?总有那么几个特殊场景。

我们只能像以前那样单独写了吗?单独写可以,但也能用模版的特化解决

怎么玩 函数模版的特化 template 返回值类型 函数模版名(参数列表) template 返回值类型 特化的函数名(参数列表) 见见猪跑 struct test { int _i = 1; }; template int toInt(T input) { cout test t; char ch = 'a'; toInt(t); toInt(ch); return 0; } int toInt(test input) int toInt(T input)

注意:特化出的实例参数列表必须和模板完全相同。

不过,为了简单方便,遇到函数模版的特殊场景会直接单独提供,这样简单清晰。

类模板的特化 全特化 template class test { public: test() { cout cout public: test() { cout cout public: test() { cout cout for(int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3