【C++初阶11 |
您所在的位置:网站首页 › 声明模板的格式 › 【C++初阶11 |
今天,带来模版进阶的讲解。 主要讲解: 非类型模版参数模版的特化模版的分离编译文中不足错漏之处望请斧正! 非类型模版参数模版参数分为类型模版参数和非类型模版参数。 可以这么理解:前者是为了泛化类型,后者给定了实际类型,更像是给类模板所有实例用的一个常量。 也有这样的要求:浮点数、类对象以及字符串是不允许作为非类型模板参数的。基本上就是用整形家族来当非类型模版参数。 声明格式 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 |