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

长春做网站长春网站设计宣传推广网络推广

长春做网站长春网站设计,宣传推广网络推广,网站被墙了什么意思,最新一键自助建站程序源码#x1f525;#x1f525; 欢迎来到小林的博客#xff01;#xff01;       #x1f6f0;️博客主页#xff1a;✈️林 子       #x1f6f0;️博客专栏#xff1a;✈️ C       #x1f6f0;️社区 :✈️ 进步学堂       #x1f6f0;️欢…         欢迎来到小林的博客       ️博客主页✈️林 子       ️博客专栏✈️ C       ️社区 :✈️ 进步学堂       ️欢迎关注点赞收藏✍️留言 目录 认识模板function template函数模板class类模板模板特化半特化(偏特化)模板原理 认识模板 模板是C中泛型编程的基础一个模板就是一个创建类或者函数的蓝图或者说是公式。 当使用一个vector这样的泛型类型时或者find这样的泛型函数时我们提供足够的信息将蓝图转化成类或者函数。这种转化发生在编译时。 function template函数模板 比如我们想写一个swap函数来交换两个数的值在C中我们可以用函数重载来重载多个函数来实现对不同类型的交换。比如我们要交换int 和 double类型那么仅仅重载一个 swap(int x ,int y)是不够的。还需要重载一个swap(double x,double y) 函数。 但如果我还想交换其他的类型也要写出其他类型对应的函数重载。这样就显得十分麻烦。所以这时候我们就可以function template(函数模板) 来减少我们需要写的代码。 templateclass T //定义函数模板 void Swap(T x, T y) //T是模板参数,也就是你传入的参数 {T tmp x;x y; y tmp; } int main() {int i1 5, i2 10;double d1 5.5, d2 10.5;string str1 hello, str2 world;cout 交换前 endl;cout i1 : i1 , i2 : i2 endl;cout d1 : d1 , d2 : d2 endl;cout str1 : str1 , str2 : str2 endl;Swap(i1, i2);Swap(d1, d2);Swap(str1, str2);cout 交换后 endl;cout i1 : i1 , i2 : i2 endl;cout d1 : d1 , d2 : d2 endl;cout str1 : str1 , str2 : str2 endl;return 0; }代码运行结果 我们写了一份代码就可以交换所有类型而不用频繁的去自己写函数重载。 class类模板 类模板是用来生成类的蓝图与函数模板不同的是编译器不能为类模板推断模板参数类型。为了使用类模板我们必须在类名后面加中提供额外信息。 template class T class Node { public:void fun(){cout T* : typeid(next).name() endl;cout T : typeid(val).name() endl;} private:T* next;T val; };int main() {Nodeint ni;ni.fun();cout endl;Nodedouble nd;nd.fun();cout endl;Nodechar nc;nc.fun();return 0; }运行结果 此时我们就可以发现你中传什么类型进去那么你类中的T就是什么类型。这就大大的方便了我们的编码如果没有模板那么每个类型都要安插一个这样的类出来是非常麻烦的。 模板特化 如果你想对不同的模板参数做不同的处理那么此时你可以用模板指定类型。比如你有一个正常的模板但是当模板参数为double时想做一下特殊处理那么我们可以再定义一个类型模板的类。这样再生成模板时会优先生成最匹配的那一项 //普通模板 templateclass T class A { public:A(){cout T() endl; } };//特化 template class Adouble { public:A(){cout double() endl;} };int main() {Aint ai;Achar ac;Adoublead;return 0; }我们来看看它们会调用哪些构造函数。 我们发现当在其他模板参数类型时会调用T()但是当模板参数为double时调用的是double()。 这也就意味着当模板参数为double时那么会优先选择最匹配的。这种行为被称为特化。 半特化(偏特化) 当你要传入的模板参数一半需要自动推导一半又需要自己定义时可以使用半特化。 templateclass T1,class T2 class A { public:A(){cout AT1,T2 endl; } };templateclass T1 class AT1,char { public:A(){cout AT1,char endl;} };int main() {Aint,int a1;Adouble,char a2;Achar,chara3;return 0; }运行结果 我们发现只要一个模板参数对应那么就会优先选择对应的那个。 模板原理 模板的原理其实就是根据你所传的模板参数又给你自动生成了一个类。而这个过程在编译时发生。就比如如下这个代码。 templateclass T1,class T2 class A { public:T1 a;T2 b; };int main() {Aint,int a1;Adouble,char a2;Achar,chara3;return 0; }它在编译后实际上是这样的 class A { public:int a;int b; };class A { public:double a;char b; };class A { public:char a;char b; };会生成三个A类。分别对应的模板参数 Aint,int a1; Adouble,char a2; Achar,chara3; 当然我们在编码的时候是无法用相同的类名的。但在编译时会有类似于函数重载的机制(个人猜测)生成出多个类。 所以函数模板的本质就是方便你编码。等编译时再为你自动生成你当初传入的模板参数时对应的类。也就是说虽然表面上你写的代码减少了但本质上需要的代码并没有减少。只是在编译时为你自动生成了。
http://wiki.neutronadmin.com/news/170988/

相关文章:

  • 女装市场网站建设费用评估查询网站有没有备案
  • 网站推广代运营wordpress 建站视频
  • 网站设计的提案想注册一个设计网站吗
  • 营销网站制作流程英文网站建设比较好
  • 服装代销的网站源码佛山营销型建设网站
  • wordpress建站资源网站模块分类
  • 淘宝上做淘宝客的网站jqueryui做的网站
  • 网站建设类的论文题目qq网页注册入口
  • 网站建设工作分解wordpress内置分页显示总页数
  • 企业建设网站有什么作用北京微信网站搭建费用
  • 门户网站时代朋友做的网站图片不显示
  • 成都零起飞网站建设建筑工程找工作平台
  • 广州建筑公司招聘网站asp 网站后台
  • 苏州行业网站建设桂林象鼻山要门票吗
  • 外贸网站开发推广网店如何推广
  • 晋城网站建设价格如何修改网页上的内容
  • 网站页数上海ktv最新通知
  • 淘宝客推广网站建设悦阁网站建设
  • 国家关于网站信息建设管理文件现在中美关系最新消息
  • asp网站后台密码文件网站首页专题怎么做
  • 英文网站建设哪家强银河麒麟软件下载网站
  • 有没有免费的网站空间网站app开发公司
  • 58同城会员网站怎么做广东网站建设设计服务
  • 苏州网站建设自学广州火车站
  • 阿里巴巴国际站客户经理在建设厅网站怎么办建造师延期
  • 北京托管网站专业版式设计网站
  • wordpress主题 四亩田网站优化专家
  • html5高端网站建设织梦模板公众号怎么做临时链接
  • 网站怎样做广告设计用到的软件
  • 自定义内容网站企业网站建设可行性分析任务