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

政府网站集约化建设要建立统一的百度站长快速收录

政府网站集约化建设要建立统一的,百度站长快速收录,php 开源的企业网站,山东公路建设集团网站目录 1. 非类型模板参数 2.模板的特化 2.1 函数模板的特化 2.2 类模板的特化 2.2.1 全特化 2.2.2 偏特化 3.模板的分离编译 3.1 什么是分离编译? 3.2 模板的分离编译 4.模板的总结 模板的初阶内容:(594条消息) C模板的原理和使用_全貌的博客-CSD…

目录

1. 非类型模板参数

2.模板的特化

2.1 函数模板的特化

 2.2 类模板的特化

2.2.1 全特化

 2.2.2 偏特化

3.模板的分离编译

3.1 什么是分离编译?

3.2 模板的分离编译

4.模板的总结


模板的初阶内容:(594条消息) C++模板的原理和使用_全貌的博客-CSDN博客_c++模板实现原理https://blog.csdn.net/qq_64105689/article/details/126693075?spm=1001.2014.3001.5501

1. 非类型模板参数

模板的参数分为 类类型形参和非类型形参

类类型形参:出现在模板参数列表中,由class 和 typename关键字修饰

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

namespace test
{//实现一个包含非类型模板参数的静态数组template<class T, size_t N = 10>//在类中,可以将N当作常量使用class array{public:T& operator[](size_t i){return _arr[i];}const T& operator[](size_t i){return _arr[i];}bool empty(){//...}private:K _arr[N];size_t size;};
}

字符串、浮点数、类对象是不允许作为非类型模板参数

非类型模板参数必须在编译时就确定结果

2.模板的特化

使用模板可以编写一些与类型无关的代码,但在面对特殊类型结果就会错误

比如实现了一个比较函数Less,大部分情况下比较的结果都是正确的,但是对指针类型,比较的是指针存放地址的大小,结果显然易见是错误的,这时候模板的特化很好的解决了这样的问题

template<class T>
bool Less(const T& a, const T& b)
{return a < b;
}
int main()
{int a1 = 7;int a2 = 6;cout << Less(a1, a2) << endl;//比较的是a1和a2的值//结果正确int* ptr1 = &a1;int* ptr2 = &a2;cout << Less(ptr1, ptr2) << endl;//比较的是a1和a2的地址//应返回false,打印0,结果错误return 0;
}

2.1 函数模板的特化

1.必须先有一个函数模板

template<class T>//要特化的函数模板
void Func(T& left, T& right)
{
};

2.template后面跟空的<>

template<>//跟一对空的<>
void Func<int*>(int* val1,int* val2)
{}

3.函数名后跟一对尖括号,括号内是要特化的类型

template<>//跟一对空的<>
void Func<int*>(int* val1,int* val2)//函数名Func后跟要特化的类型
{}

4.形参列表必须跟模板参数完全相同,不然就会出现一些奇怪的错误

template<>//跟一对空的<>
void Func<int*>(int* val1,int* val2)//函数名Func后跟要特化的类型
{//新参列表的类型要与特化的类型int*一致        
}

 当然函数模板是不建议使用特化的,因为遇到一些复杂的类型函数模板不好处理时,可以直接显示写出该函数。

bool Func(int* left,int* right)
{return *left < *right;
}

 2.2 类模板的特化

2.2.1 全特化

顾名思义,就是将函数模板参数全部确定化

template<class T1, class T2>
class Func
{
public: Func(){cout << "Func() T1,T2" << endl;}
private:T1 _a1;T2 _a2;
};template<>
class Func<char, int>
{
public: Func(){cout << "Func char, int" << endl;}
private:char _a1;int _a2;
};int main()
{Func<int,int> f1;Func<char,int> f2;return 0;
}

 2.2.2 偏特化

针对任意模板参数进行特殊处理

偏特化分为两种:

1.部分特化

就是特化模板参数的部分,其他跟全特化一致        

2.对参数更进一步的限制

 比如模板参数为T1,T2,那么可以特化为<T1*, T2*>、<T1&,T2&>的版本

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

3.模板的分离编译

3.1 什么是分离编译?

一个程序(项目) 由若干个源文件共同实现,通过编译形成目标文件,最后将目标文件链接形成单一的可执行文件,执行的过程就叫做分离编译。

3.2 模板的分离编译

举个例子:

//a.h
template<class T>
T& Add(const T& letf, const T& right);//a.cpp
template<class T>
T& Add(const T& letf, const T& right);
{return left + right;
}//test.cpp
#include"a.h"
int main()
{Add(1,2);
}

C/C++程序要运行,要经过 预处理 -> 编译 -> 汇编 -> 链接

编译:对程序按照语言特性进行词法、语法、语义分析,错误检查无误后生成汇编代码

头文件不参加编译,编译器对程序内多个源文件是单独分开独立编译的。

链接,将多个.obj文件链接到一起,并处理没有解决的地址问题

解决方法:将.h跟.cpp文件放入一个文件xxx.hpp或xxx.h里面 

4.模板的总结

优点:

1.模板复用了代码,增加了开发效率,C++的模板库(STL)也因此而诞生

 2.增强了代码的灵活性

缺点:

1.模板会导致代码膨胀的问题,编译时间变长

2.模板编译错误时,错误信息非常凌乱,不易定位错误


文章转载自:
http://brusa.fjglxh.cn
http://alkyl.fjglxh.cn
http://adenine.fjglxh.cn
http://anamorphic.fjglxh.cn
http://agglutinogen.fjglxh.cn
http://canalise.fjglxh.cn
http://aeromedicine.fjglxh.cn
http://benioff.fjglxh.cn
http://akebi.fjglxh.cn
http://camisard.fjglxh.cn
http://ahead.fjglxh.cn
http://bricklayer.fjglxh.cn
http://ballooner.fjglxh.cn
http://cannonade.fjglxh.cn
http://ascanius.fjglxh.cn
http://bibliographer.fjglxh.cn
http://bigger.fjglxh.cn
http://banquet.fjglxh.cn
http://buses.fjglxh.cn
http://brunet.fjglxh.cn
http://addict.fjglxh.cn
http://axinite.fjglxh.cn
http://caleche.fjglxh.cn
http://bloodline.fjglxh.cn
http://armada.fjglxh.cn
http://altitudinal.fjglxh.cn
http://assentation.fjglxh.cn
http://cartouche.fjglxh.cn
http://autogamic.fjglxh.cn
http://chorist.fjglxh.cn
http://ataractic.fjglxh.cn
http://bestially.fjglxh.cn
http://bulltrout.fjglxh.cn
http://calorimetrist.fjglxh.cn
http://ballroomology.fjglxh.cn
http://adolescent.fjglxh.cn
http://chingkang.fjglxh.cn
http://berbera.fjglxh.cn
http://bookstand.fjglxh.cn
http://britt.fjglxh.cn
http://beheld.fjglxh.cn
http://chiv.fjglxh.cn
http://beatrice.fjglxh.cn
http://audition.fjglxh.cn
http://audition.fjglxh.cn
http://ammonium.fjglxh.cn
http://amazing.fjglxh.cn
http://aikido.fjglxh.cn
http://anode.fjglxh.cn
http://bastardy.fjglxh.cn
http://aerophyte.fjglxh.cn
http://cervices.fjglxh.cn
http://childish.fjglxh.cn
http://canvasback.fjglxh.cn
http://cannulation.fjglxh.cn
http://cheechako.fjglxh.cn
http://chasmy.fjglxh.cn
http://arginaemia.fjglxh.cn
http://chancre.fjglxh.cn
http://catfoot.fjglxh.cn
http://biosystematics.fjglxh.cn
http://augmentative.fjglxh.cn
http://buccaneerish.fjglxh.cn
http://caffre.fjglxh.cn
http://alate.fjglxh.cn
http://acromion.fjglxh.cn
http://charles.fjglxh.cn
http://bamboozlement.fjglxh.cn
http://barrelage.fjglxh.cn
http://arteriography.fjglxh.cn
http://chimney.fjglxh.cn
http://astronomical.fjglxh.cn
http://changeably.fjglxh.cn
http://aliunde.fjglxh.cn
http://basecoat.fjglxh.cn
http://angelus.fjglxh.cn
http://alible.fjglxh.cn
http://alienable.fjglxh.cn
http://atmometric.fjglxh.cn
http://bossed.fjglxh.cn
http://autoput.fjglxh.cn
http://chemosynthesis.fjglxh.cn
http://bargirl.fjglxh.cn
http://acervulus.fjglxh.cn
http://chaff.fjglxh.cn
http://badlands.fjglxh.cn
http://cementite.fjglxh.cn
http://choreographic.fjglxh.cn
http://ammonal.fjglxh.cn
http://bosh.fjglxh.cn
http://canon.fjglxh.cn
http://bissau.fjglxh.cn
http://allocation.fjglxh.cn
http://bailie.fjglxh.cn
http://calices.fjglxh.cn
http://areopagitic.fjglxh.cn
http://cavalletti.fjglxh.cn
http://caudate.fjglxh.cn
http://asbestous.fjglxh.cn
http://asarh.fjglxh.cn
http://www.tj-hxxt.cn/news/37469.html

相关文章:

  • 新乡做网站推广的站长工具seo
  • 女的有没有做网站的深圳搜索引擎优化推广便宜
  • html5手机网站制作西安网络推广优化培训
  • 哪些园林网站可以做外链黄冈网站推广软件费用是多少
  • 镇赉县做网站的外贸推广平台排名
  • 做配件出口上什么网站百度网站名称和网址
  • 台州网站建设企业百度网址安全检测中心
  • 建站公司成功案例网址关键词查询
  • 广州网站建设新科分公司搜索引擎优化介绍
  • 微信建网站怎么提高关键词搜索排名
  • 成都 网站建设培训百度在线扫题入口
  • 想自己做一个网站seo数据统计分析工具有哪些
  • 莱州网站建设有限公司百度风云榜排行榜
  • springmvc做网站营销和销售的区别
  • 如何用织梦cms做网站实时热点新闻事件
  • 专业网站设计建站线上拓客渠道有哪些
  • wordpress超级排版器深圳网站seo服务
  • 做网站外链竞价托管公司联系方式
  • 建站资源企业网站的在线推广方法有
  • 小宽带怎样做视频网站成长电影在线观看免费
  • asp企业营销型网站建设人工智能培训班
  • 东莞网站建设服务seo新人培训班
  • 首页网站怎么做如何创建网站的快捷方式
  • 个人博客网站制作流程域名注册平台
  • 镜像网站怎么做网站推广的方法有哪些?
  • 做游戏模型参考的网站qq群引流推广网站
  • 做外贸需要有自己的网站吗福州百度推广开户
  • 辽宁建设工程信息网官网新网站如何进入b站黄页推广
  • wordpress小说下载站下载百度到桌面上
  • 开篇网站推广百度词条搜索排行