当前位置: 首页 > wzjs >正文

网站推广属于哪些西宁网站运营公司

网站推广属于哪些,西宁网站运营公司,产品设计分析案例,个人主页制作教程目录 一、模板 1.1 非类型模板参数 二、模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 全特化 偏特化 (1)部分特化 (2)参数更进一步的限制 三、模板分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决…

目录

一、模板

1.1 非类型模板参数

二、模板的特化

2.1 概念

2.2 函数模板特化

2.3 类模板特化

全特化

偏特化

(1)部分特化

(2)参数更进一步的限制

三、模板分离编译

3.1 什么是分离编译

3.2 模板的分离编译

3.3 解决方法

四、模板总结

4.1 优点

4.2 缺点


一、模板

1.1 非类型模板参数

模板参数分类类型形参与非类型形参

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

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

注意:1.浮点数、类对象以及字符串是不允许作为非类型模板参数(基本int)

           2.非类型的模板参数必须在编译期就能确认结果

二、模板的特化

2.1 概念

通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能得到一些错误的结果,需要特殊处理,比如:实现了一个专门用来进行小于的函数模板

可以看出,Less绝大多数情况下都可以正常比较,但是在特定的场景小就会得到错误的结果,上述示例中,p1指向的d1显然小于p2指向的对象,但是Less内部并没有比较p1和p2指向的对象内容,而比较的是p1和p2指针的地址,这就无法达到预期而错误

此时,就需要对模板进行特化。即:在原模版类的基础上,针对特殊类型所进行特殊化的实现方式。模板特化中分为函数模板特化与类模板特化

2.2 函数模板特化

函数模板的特化步骤:

1.必须要先有一个基础的函数模板

2.关键字template后面接一对空的尖括号<>

3.函数名后面跟一对尖括号,尖括号中指定需要特化的类型

4.函数形参表:必须要和模板函数的基础参数类型完全相同,如果不同编译器可能会报一些错

注意:一般情况下如果函数模板遇到不能处理或者处理有误的类型,为了实现简单通常都是将函               数直接给出(推荐,这种实现简单明了,代码的可读性高,容易书写,因为对于一些参数类             型复杂的函数模板,特化时特别给出,因此函数模板不建议特化)

#include <iostream>
#include"Date.h"template <class T>
bool Less( T left, T right)
{return left < right;
}
//template<>
//bool Less<Date*>(Date* left, Date* right)
//{
//	cout << "Date*" << endl;
//	return *left < *right;
//}
bool Less(Date* left, Date* right)
{cout << "Date*" << endl;return *left < *right;
}
int main()
{cout << Less(1, 2) << endl;Date d1(2022 ,7,7);Date d2(2023, 7, 8);cout << Less(d1, d2) << endl;Date* p1 = &d1;Date* p2 = &d2;cout << Less(p1, p2) << endl;return 0;
}

2.3 类模板特化

全特化

全特化就是将模板参数列表中所有的参数都确定化

#include <iostream>
using namespace std;
//#include"Date.h"//template <class T>
//bool Less( T left, T right)
//{
//	return left < right;
//}
template<>
bool Less<Date*>(Date* left, Date* right)
{cout << "Date*" << endl;return *left < *right;
}
//bool Less(Date* left, Date* right)
//{
//	cout << "Date*" << endl;
//	return *left < *right;
//}
template <class T1,class T2>
class Date
{
public:Date(){cout << "Date<T1,T2>" << endl;}
private:T1 _d1;T2 _d2;};
template <>
class Date<int ,char>
{
public:Date(){cout << "Date<int,char>" << endl;}
private:int _d1;char _d2;};
int main()
{/*cout << Less(1, 2) << endl;Date d1(2022 ,7,7);Date d2(2023, 7, 8);cout << Less(d1, d2) << endl;Date* p1 = &d1;Date* p2 = &d2;cout << Less(p1, p2) << endl;*/Date<int ,int> d1;Date<int, char> d2;return 0;
}
偏特化

偏特化:任何针对模板参数进一步条件限制的特化版本

表现形式

(1)部分特化

将模板参数类表中的一部分参数特化

template<class T1>
class Date<int, T1>
{
public:Date(){cout << "Date<int,T1>" << endl;}
private:int _d1;char _d2;};
(2)参数更进一步的限制

偏特化并不仅仅是指特化部分参数,而是针对模板参数更进一步的条件限制所设计的一个特化版本

template <class T1 ,class T2>
class Date<T1*,T2*>
{
public:Date(){cout << "Date<T1*,T2*>" << endl;}
private:T1 _d1;T2 _d2;};
template <class T1, class T2>
class Date<T1&, T2&>
{
public:Date(){cout << "Date<T1&,T2&>" << endl;}
private:T1 _d1;T2 _d2;};

三、模板分离编译

3.1 什么是分离编译

一个程序(项目)由若干源文件共同实现,而每一个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式

模板的分离编译

c/c++程序运行时的过程

3.2 模板的分离编译

当在.h文件中是模板的时候,没有对他实例化,编译器是不确定他的类型的,所以他不会在符号表中生成地址,在连接的时候编译器没有办法找到相应的地址,所以报错

3.3 解决方法

(1)将声明和定义放在同一个文件当中(推荐)

(2)模板定义实例化

四、模板总结

4.1 优点

1、增强复用了代码,节省资源,更快的迭代开发,C++的标准库因此产生

2、增强了代码的灵活性

4.2 缺点

1、模板会导致代码膨胀问题,也会导致编译时间过长

2、出现模板编译错误的时候,错误信息非常凌乱,不易定位错误


文章转载自:

http://lLnhtxHV.qkdjq.cn
http://RVD2hwoq.qkdjq.cn
http://g2TuH3zd.qkdjq.cn
http://TqXeX8Rz.qkdjq.cn
http://4ovU9UpX.qkdjq.cn
http://1giwWHpi.qkdjq.cn
http://6CVjyNL8.qkdjq.cn
http://eudksFux.qkdjq.cn
http://MIvjD2xn.qkdjq.cn
http://QGpwBxg1.qkdjq.cn
http://J6lcynEm.qkdjq.cn
http://QtPA0D9Z.qkdjq.cn
http://rQNMQeMm.qkdjq.cn
http://3dVuZ2pF.qkdjq.cn
http://okbCJc0w.qkdjq.cn
http://WWly0ZPz.qkdjq.cn
http://sDh76evb.qkdjq.cn
http://VliA7f4P.qkdjq.cn
http://XfDKP3S1.qkdjq.cn
http://QDtCtPfN.qkdjq.cn
http://a7ZXyq5b.qkdjq.cn
http://qtuKCGgH.qkdjq.cn
http://6U1ODi3k.qkdjq.cn
http://PtoU9DxU.qkdjq.cn
http://2j19vyzH.qkdjq.cn
http://7gqhSe03.qkdjq.cn
http://HWKP03tb.qkdjq.cn
http://9DAISmDY.qkdjq.cn
http://N5nATCcD.qkdjq.cn
http://kywH4xze.qkdjq.cn
http://www.dtcms.com/wzjs/736919.html

相关文章:

  • 海城做网站创网保
  • 手机网站seo优化在线crm系统crm
  • 免费建单页网站软文是什么意思
  • 营销型网站建设怎么收费酒水招商网站大全
  • 西安微商城网站建设自己做网站需要备案么
  • wordpress博客备份青岛seo计费
  • 网站开发代码规范公司策划书模板
  • 人工智能设计网站手机端网站开发视频
  • 企业网站建设的制作公司网站结构图
  • 贵阳网站建设贵阳网站建设哪家好兰州网站哪里做
  • 贵港有网站建设的公司吗1688外贸
  • 国外网站翻墙怎么做公司网站建设企业
  • 贵州建设厅文件网站首页wordpress admin theme 下载
  • 网站设计 英文网站维护页面 下载
  • 怎么在网站标题做logo做店铺装修的公司网站
  • 北京网站设计的公司wordpress粉丝主题
  • 莒县做网站的公司wordpress主题适应手机浏览器
  • wordpress模板网站标题重复网站制作软件排行榜
  • 网站建设哪个公司做得好做设计什么网站可以兼职
  • 重庆网站怎么设置myeclipse怎样做网站
  • 北京网站开发建设 58同城为何上不了建设银行网站
  • 天津网站建设外贸php 开启gzip加速网站
  • 做网站备案需要多长时间调用wordpress评论框
  • 企业做网站都购买域名吗做设计常用网站有哪些
  • 做国际网站12建网站
  • 用ps怎么做学校网站页面wordpress免费企业主题网站模板
  • 会qt怎么做网站城建网站论坛 建设
  • 用土豆做美食的视频网站西安seo王尘宇
  • 开化网站建设公司开工作室做网站怎样找资源
  • 绍兴公司做网站建设工程监理