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

成都建站网站月付商城网站建站

成都建站网站,月付商城网站建站,国内seo公司哪家最好,南山网站建设公司乐云seo目录 1、函数模板 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.4.1 隐式实例化 1.4.2 显式实例化 1.5 模板参数的匹配原则 2、类模板 2.1 类模板的定义格式 2.2 类模板的实例化 讲模板之前呢#xff0c;我们先来谈谈泛型编程我们先来谈谈泛型编程 泛型编程编写与类型无关的通用代码是代码复用的一种手段。模板是泛型编程的基础。 模板分为两类函数模板与类模板 1、函数模板 1.1 函数模板概念 函数模板代表了一个函数家族该函数模板与类型无关在使用时被参数化根据实参类型产生函数的特定类型版本。 1.2 函数模板格式 templatetypename T1, typename T2,......,typename Tn返回值类型 函数名(参数列表){} //templateclass T templatetypename T void Swap(T left, T right) {T tmp left;left right;right tmp; } 注意typename是用来定义模板参数关键字也可以使用class(切记不能使用struct代替class) 。 1.3 函数模板的原理 函数模板是一个蓝图它本身并不是函数是编译器用使用方式产生特定具体类型函数的模具。所以其实模板就是将本来应该我们做的重复的事情交给了编译器。 在编译器编译阶段对于模板函数的使用编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如当用double类型使用函数模板时编译器通过对实参类型的推演将T确定为double类型然后产生一份专门处理double类型的代码对于字符类型也是如此。 1.4 函数模板的实例化 用不同类型的参数使用函数模板时称为函数模板的实例化。模板参数实例化分为隐式实例化和显式实例化。 1.4.1 隐式实例化 隐式实例化是让编译器根据实参推演模板参数的实际类型 templateclass T T Add(const T left, const T right) {return left right; } int main() {int a1 10, a2 20;double d1 10.0, d2 20.0;Add(a1, a2);Add(d1, d2);return 0; } 这里Add(a1, a2)与Add(d1, d2)都是隐式实例化编译器会根据实参推出实际类型。 我们再来看一段代码 templateclass T T Add(const T left, const T right) {return left right; }int main() {int i 1;double d 1.1;Add(i, d);return 0; } 该语句不能通过编译因为在编译期间当编译器看到该实例化时需要推演其实参类型通过实参i将T推演为int通过实参d将T推演为double类型但模板参数列表中只有一个T编译器无法确定此处到底该将T确定为int 或者 double类型而报错。 注意在模板中编译器一般不会进行类型转换操作因为一旦转化出问题编译器就需要背黑锅Add(i, d); 这里要解决这样的问题有两种方式 1. 用户自己来强制转化 2. 使用显式实例化。 int main() {int i 1;double d 1.1;Add(i, (int)d);return 0; } 1.4.2 显式实例化 显式实例化是在函数名后的中指定模板参数的实际类型 templateclass T T Add(const T left, const T right) {return left right; } int main() {int i 1;double d 1.1;Addint(i, d);// 显式实例化为intAdddouble(i, d);// 显示实例化为doublereturn 0; } 如果类型不匹配编译器会尝试进行隐式类型转换如果无法转换成功编译器将会报错。 1.5 模板参数的匹配原则 1. 一个非模板函数可以和一个同名的函数模板同时存在而且该函数模板还可以被实例化为这个非模板函数 // 专门处理int的加法函数 int Add(int left, int right) {return left right; } // 通用加法函数 templateclass T T Add(T left, T right) {return left right; } void Test() {Add(1, 2); // 与非模板函数匹配编译器不需要特化Addint(1, 2); // 调用编译器特化的Add版本 } 2. 对于非模板函数和同名函数模板如果其他条件都相同在调动时会优先调用非模板函数而不会从该模板产生出一个实例。如果模板可以产生一个具有更好匹配的函数 那么将选择模板 // 专门处理int的加法函数 int Add(int left, int right) {return left right; } // 通用加法函数 templateclass T1, class T2 T1 Add(T1 left, T2 right) {return left right; } void Test() {Add(1, 2); // 与非函数模板类型完全匹配不需要函数模板实例化Add(1, 2.0); // 模板函数可以生成更加匹配的版本编译器根据实参生成更加匹配的Add函数 } 3. 模板函数不允许自动类型转换但普通函数可以进行自动类型转换 2、类模板 2.1 类模板的定义格式 templateclass T1, class T2, ..., class Tn class 类模板名 {// 类内成员定义 }; templateclass T class stack { public:stack();//声明在类外面定义~stack(){delete[] _a;_top _capacity 0;} private:T* _a;int _top;int _capacity; };// 注意类模板中函数放在类外进行定义时需要加模板参数列表 templateclass T stackT::stack(): _a(nullptr), _top(0), _capacity(0) {} 2.2 类模板的实例化 类模板实例化与函数模板实例化不同类模板实例化需要在类模板名字后跟然后将实例化的类型放在中即可类模板名字不是真正的类而实例化的结果才是真正的类。 int main() {stackint st1;stackchar st2;return 0; } 如果我们的栈是要存储int类型的数据我们就实例化为int如果是存储char类型的数据就实例化为char类型。
文章转载自:
http://www.morning.plfy.cn.gov.cn.plfy.cn
http://www.morning.krdmn.cn.gov.cn.krdmn.cn
http://www.morning.qtwd.cn.gov.cn.qtwd.cn
http://www.morning.qfmns.cn.gov.cn.qfmns.cn
http://www.morning.lkgqb.cn.gov.cn.lkgqb.cn
http://www.morning.dgng.cn.gov.cn.dgng.cn
http://www.morning.lddpj.cn.gov.cn.lddpj.cn
http://www.morning.fbnsx.cn.gov.cn.fbnsx.cn
http://www.morning.kpcdc.cn.gov.cn.kpcdc.cn
http://www.morning.diuchai.com.gov.cn.diuchai.com
http://www.morning.yxyyp.cn.gov.cn.yxyyp.cn
http://www.morning.hmdyl.cn.gov.cn.hmdyl.cn
http://www.morning.bkcnq.cn.gov.cn.bkcnq.cn
http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn
http://www.morning.ndltr.cn.gov.cn.ndltr.cn
http://www.morning.yqgny.cn.gov.cn.yqgny.cn
http://www.morning.qqnh.cn.gov.cn.qqnh.cn
http://www.morning.ljdhj.cn.gov.cn.ljdhj.cn
http://www.morning.mggwr.cn.gov.cn.mggwr.cn
http://www.morning.bgqr.cn.gov.cn.bgqr.cn
http://www.morning.wynnb.cn.gov.cn.wynnb.cn
http://www.morning.sxwfx.cn.gov.cn.sxwfx.cn
http://www.morning.xdfkrd.cn.gov.cn.xdfkrd.cn
http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn
http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn
http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn
http://www.morning.kwcnf.cn.gov.cn.kwcnf.cn
http://www.morning.srndk.cn.gov.cn.srndk.cn
http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn
http://www.morning.paxkhqq.cn.gov.cn.paxkhqq.cn
http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn
http://www.morning.qkrz.cn.gov.cn.qkrz.cn
http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn
http://www.morning.ygrkg.cn.gov.cn.ygrkg.cn
http://www.morning.bfbl.cn.gov.cn.bfbl.cn
http://www.morning.cnqff.cn.gov.cn.cnqff.cn
http://www.morning.rkdhh.cn.gov.cn.rkdhh.cn
http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn
http://www.morning.zhqfn.cn.gov.cn.zhqfn.cn
http://www.morning.jwwfk.cn.gov.cn.jwwfk.cn
http://www.morning.znqxt.cn.gov.cn.znqxt.cn
http://www.morning.kyflr.cn.gov.cn.kyflr.cn
http://www.morning.jbnss.cn.gov.cn.jbnss.cn
http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn
http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn
http://www.morning.jglqn.cn.gov.cn.jglqn.cn
http://www.morning.lkxzb.cn.gov.cn.lkxzb.cn
http://www.morning.jyfrz.cn.gov.cn.jyfrz.cn
http://www.morning.bsxws.cn.gov.cn.bsxws.cn
http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn
http://www.morning.gbqgr.cn.gov.cn.gbqgr.cn
http://www.morning.cprls.cn.gov.cn.cprls.cn
http://www.morning.qpqb.cn.gov.cn.qpqb.cn
http://www.morning.crfyr.cn.gov.cn.crfyr.cn
http://www.morning.ypzr.cn.gov.cn.ypzr.cn
http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn
http://www.morning.btpzn.cn.gov.cn.btpzn.cn
http://www.morning.zrlms.cn.gov.cn.zrlms.cn
http://www.morning.dfhkh.cn.gov.cn.dfhkh.cn
http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn
http://www.morning.pltbd.cn.gov.cn.pltbd.cn
http://www.morning.yunease.com.gov.cn.yunease.com
http://www.morning.mmplj.cn.gov.cn.mmplj.cn
http://www.morning.hwcgg.cn.gov.cn.hwcgg.cn
http://www.morning.qttg.cn.gov.cn.qttg.cn
http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn
http://www.morning.xhlht.cn.gov.cn.xhlht.cn
http://www.morning.nnttr.cn.gov.cn.nnttr.cn
http://www.morning.yldgw.cn.gov.cn.yldgw.cn
http://www.morning.rngyq.cn.gov.cn.rngyq.cn
http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn
http://www.morning.hchrb.cn.gov.cn.hchrb.cn
http://www.morning.qrmyd.cn.gov.cn.qrmyd.cn
http://www.morning.dxpqd.cn.gov.cn.dxpqd.cn
http://www.morning.cjcry.cn.gov.cn.cjcry.cn
http://www.morning.zxfr.cn.gov.cn.zxfr.cn
http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn
http://www.morning.yqyhr.cn.gov.cn.yqyhr.cn
http://www.morning.rxlk.cn.gov.cn.rxlk.cn
http://www.morning.wwxg.cn.gov.cn.wwxg.cn
http://www.tj-hxxt.cn/news/241754.html

相关文章:

  • 推广农村特色产品建设网站方案住总第三开发建设有限公司网站
  • 网站建设开发客户开场白网络规划设计师资料网盘下载
  • 网站建设了淘宝接单做网站
  • wordpress批量拿站南通企业建站程序
  • 青岛建网站哪个好新乡商城网站建设
  • 医院客户做网站找谁怎么做网站的界面
  • 网站设计怎么做图片透明度wordpress 明星主题
  • 涿州建设局网站阳新县建设局网站
  • 电脑 手机网站建站网站服务器防护
  • 官方网站建设的公司门户网站模板html5
  • 观音桥网站建设网站建设将html嵌入wordpress
  • 教育教学成果展示网站建设wordpress检索
  • 网站ico添加f福州网站建设公司
  • wordpress中文网站殷氏科技网站建设工作室
  • 自己做网站能否赚钱6企业网站建设制作公司哪家好
  • 片网站无法显示网站建设好公司
  • 创意做网站公司苏州的建筑公司网站
  • 免费门户网站模板下载昆山设计网站公司
  • 广告平台网站有哪些wordpress修改后台管理地址=
  • 专业做网站全包提高网站打开速度
  • 网站开发折旧开发电子商务系统的五个步骤
  • 网站超市网站建设怎样接业务
  • 网站维护页面 下载建设网上银行登录
  • 简约网站程序网站源码下载炫酷
  • 有什么网站可以接单做兼职的企业铭做网站
  • 狼雨seo网站专做老酒的网站
  • 查看网站有没有备案微信公众号管理平台登录
  • 建立网站可以赚钱吗域名购买是什么意思
  • 石嘴山网站定制开发建设成都最差的十大物业公司
  • 邢台网站设计华北冶建工程建设有限公司网站