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

建设主题网站的顺序是什么意思东莞建设网

建设主题网站的顺序是什么意思,东莞建设网,中国金湖建设网站,制作图片软件免费版目录 1.类型模板参数和非类型模板参数 2.特化 3. 模板的分离编译 4.模板的优缺点 1.类型模板参数和非类型模板参数 之前写模板传的都是类型——类型模板参数 现在想定义两个静态数组,数组长度不同,就可以用模板参数传数值而不是传类型 非类型模板…

目录

1.类型模板参数和非类型模板参数

2.特化

3. 模板的分离编译

4.模板的优缺点


1.类型模板参数和非类型模板参数

之前写模板传的都是类型——类型模板参数

现在想定义两个静态数组,数组长度不同,就可以用模板参数传数值而不是传类型

非类型模板参数——是一个常量,只适用于整型(int,short,char,size_t...)

那么这个静态数组可以用array,是一个固定大小的顺序表

 

其实可以发现他的模板参数就是有类型的也有非类型的

成员函数没有头尾插,有迭代器和范围for,他对比的是C的静态数组,并且他的数据也存在栈上

 

 为什么可以兼容C还要搞出他?

他们对越界的检查不一样

C对越界读不检查,越界写抽查

C++的array越界读写都能查,因为重载了[ ],operator对其检查


2.特化

模板的特化,使用模板可以实现一些与类型无关的代码,但对于一些特殊的类型可能会得到错误结果

按照类型分类

  • 函数模板特化

比如之前我们实现的Less,如果传的是类型指针就会比较地址,而不是解引用之后的值

 我们的解决方案是自己写一个仿函数

但是有一点点挫

现在我们可以进行特化

template<class T>
bool Less( T left,  T right)
{return left < right;
}template<>
bool Less<Date*>(Date* left, Date* right)
{
return *left < *right;
}

一定要注意,函数模板特化,一定要有函数模板,然后才是针对某些类型的特殊处理(用函数模板特化) ,只有特化是会报错的,因为一般类型没有处理

 注意参数列表的统一,说的通俗一些,特化就是特殊处理,但是本质不应该改变

第一个Less是对引用的比较,但是第二个Less突然变成了对“值”的比较

 应该写成

 

 当然对于函数模板特化,这个类型匹配非常恶心,建议还是直接写成重载

  • 类模板特化 

和刚才的规则一样

假设我们对A类的<int,int> 类型特化

template<class T1, class T2>
class A
{
public:A(){cout << "A<T1, T2>" << endl;}
private:T1 _a1;T2 _a2;
};template<>
class A<int, int>
{
public:A(){cout << "A<int, int>" << endl;}
private:int _a1;int _a2;
};

调用结果: 

 


按照特化程度分类: 

  • 全特化

 全部参数特化

还是上面那个例子,只对<int,int>类型特化,<int,X>不可以,<X,int>也不可以

 

  • 偏特化 /半特化

 部分参数特化,是对参数类型的进一步限制

只要类型是<X,char>就匹配

template<class T1, class T2>
class A
{
public:A(){cout << "A<T1, T2>" << endl;}
private:T1 _a1;T2 _a2;
};
template<class T>
class A<T, char>
{
public:A(){cout << "A<int, int>" << endl;}
private:T _a1;char _a2;
};

 优先级总结 

 a1可以三种都可以匹配,但是他选择全特化

a2可以匹配半特化和类模板,他选择前者

最后一个没有选择


特化本质:编译器的参数匹配原则


3. 模板的分离编译

定义:一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译,生成目标文件,最后将所有的目标文件链接在一起,形成单一的可执行文件的过程

 

无法解析的外部符号就是链接错误,因为在编译的时候会生成符号表,把语言级别的代码变成汇编语言,然后汇编形成可重定位的目标二进制文件(.obj),最后链接自己形成的几个.obj然后生成可执行程序

在函数定义中,无法确定T的类型,故没有实例化

在函数模板调用中,没有函数实现,还是没办法实例化

因此最后这个函数模板没有实例化,无法生成符号,链接时自然找不到

解决方法:声明和定义都写在.h/.hpp中 

 4.模板的优缺点

  • 优点:模板复用了代码,节约资源,更快迭代开发,增强代码灵活性
  • 缺点:导致代码膨胀,编译时间变长,出现模板编译错误时,报错信息混乱,不易定位错误

 

http://www.ds6.com.cn/news/95579.html

相关文章:

  • 做庭院景观的那个网站推广好福州seo按天付费
  • 建设网站要注册公司吗百度一下你就知道官网下载安装
  • 厦门企业网站制作比较好的网络推广平台
  • 用手机可以做网站app注册拉新平台
  • 网站开发法律可行性模板建站价格
  • 山西公司怎么做网站如何做运营推广
  • 广州市人民政府新闻办公室发布会seo搜索引擎优化薪酬
  • 加油站顶棚网架价多少钱一平网店推广方法有哪些
  • 免费网站建站排行榜网站设计方案
  • 如何制作自己的网站模版seo站长综合查询工具
  • 党史网站建设重要性百度数据网站
  • 网站建设都有哪些方面淘宝网官方网站
  • 有没有专做水果网站新闻投稿平台有哪些
  • 网站备案密码是什么百度最怕哪个部门去投诉
  • 国外网站 国内做镜像找谁做百度关键词排名
  • wordpress做产品页教程视频天津seo技术教程
  • 网站开发有哪些模块百度网盘app
  • 网站后台文章列表里的每篇文章的文字全部乱码怎么办?交换友情链接推广法
  • 宁波做网站的优化大师网页版
  • 温州个人建站模板重庆seo整站优化设置
  • 网站一般用什么做的制作网站免费
  • 织梦 做网站 教程seo营销推广全程实例
  • 成都市建设局官网郑州网站建设专业乐云seo
  • 江苏省工程建设招标网站青岛seo外包服务
  • 中央气象台台风网官网seo搜索引擎优化到底是什么
  • 做返利网站能赚钱么自媒体平台大全
  • 云建站app最常用的搜索引擎有哪些
  • 怎么做自己的个人网站网络营销策划方案800字
  • 做羊毛毡的网站2024年度关键词
  • 做任务刷单的网站是真的吗山东关键词优化联系电话