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

久治县网站建设公司北京一个公司做网站认证

久治县网站建设公司,北京一个公司做网站认证,农业网站建设模板,湘潭网站建设方案费用前文本文主要是讲解一下C中的利器——模板#xff0c;相信铁子们在学完这一节后#xff0c;写代码会更加的得心应手#xff0c;更加的顺畅。一#xff0c;泛型编程想要学习模板#xff0c;我们要先了解为什么需要模板#xff0c;我们可以看看下面这个程序。int add(int中的利器——模板相信铁子们在学完这一节后写代码会更加的得心应手更加的顺畅。一泛型编程想要学习模板我们要先了解为什么需要模板我们可以看看下面这个程序。int add(int a, int b) {return a b; } double add(double a, double b) {return a b; }看看上面的程序通过函数重载我们实现了不同类型的add函数但是否有些麻烦呢这些函数只是类型不同而每增加一个新类型我们就要在写一个函数而且一个出错可能所有的函数都出错。而我们C的老祖宗也想到了这个问题于是模板就应运而生了。通过模板来实现我们的需求可以称为泛型编程。泛型编程编写与类型无关的通用代码是代码复用的一种手段。模型是泛型编程的基础二函数模板2.1 函数模板的概念函数模板代表了一个函数家族该函数模板与类型无关在使用时被参数化根据实参类型产生函数的特定类型版本。2.2函数模板格式templatetypename T1, typename T2,......,typename Tn返回值类型 函数名(参数列表){}templatetypename A A add(A a, A b) {return a b; }注意typename是用来定义模板参数关键字也可以使用class(切记不能使用struct代替class)2.3 函数模板的原理函数模板不是一个实在的函数编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述当它具体执行时将根据传递的实际参数决定其功能。 所以其实就是将我们重复做的事情交给了编译器当然要是怕累着编译器也可以自己实现haha。templatetypename A A add(A a, A b) {return a b; } int main() {int a 1, b 2;add(a, b);double c 3.3, d 4.4;add(c, d);return 0; }如以上程序调用方式如下当我们调试的时候调到反汇编我们可以发现int型的和double型所调用的函数是不一样的由此我们也可以论证编译器根据模板创建出对应函数以供使用在这个过程中模板起到了一个蓝图的作用而具体的建造材料则由我们传过去的参数决定。而这个建造的过程一般是在编译器编译阶段对于函数模板的使用编译器会根据传入的实参类型来推演出对应类型的函数以供使用。比如当用double类型使用函数模板add时编译器通过对参数类型的推演将A确定为double型创造函数。2.4 函数模板的实例化用不同类型的参数调用函数模板称为函数模板的实例化。模板参数实例化分为隐式实例化和显示实例化1.隐式实例化让编译器根据实参推演模板参数的实际类型templatetypename A A add(A a, A b) {return a b; } int main() {//下面两个是比较典型的隐式实例化int i1 1, i2 2;add(i1, i2);double d1 3.3, d2 4.4;add(d1, d2);//那么下面这种情况呢//add(i1,d1) add(i2,d2)//这种情况下编译器会根据实参i1将A推演为int//通过实参d1将A推演为double型//此时编译器不知道用那个就会报错//那么怎么解决这种情况呢//1.强制转化add(i1, (int)d1);add((double)i2, d2);//2.显示实例化return 0; }2.显示实例化在函数名后的中指定模板参数的实际类型2.5 模板参数的匹配规则一个非模板函数可以和一个同名函数模板同时出现而且该函数模板还可以被实例化成这个非模板函数int add(int a, int b) {return a b; } templatetypename A A add(A a, A b) {return a b; } int main() {add(1, 2);//此时会优先调用非模板函数//因为跳过模板实例化的过程效率更高add(int)(1, 2);//通过实例化模板//也可以实例化出这个非模板函数return 0; }对于非模板函数和同名函数模板如果其他条件都相同在调动时会优先调用非模板函数而不会从该模板产生出一个实例。如果模板可以产生一个具有更好匹配的函数 那么将选择模板int add(int a, int b) {return a b; } templatetypename A A1 add(A1 a, A2 b) {return a b; } int main() {add(1, 2);//完全匹配非模板函数//不会在进行模板实例化而是直接选择非模板函数add(1, 1.1);//与非模板函数不匹配//模板函数会根据参数生成更加匹配的函数return 0; }模板函数不允许自动类型转换但普通函数可以进行自动类型转换三,类模板3.1 类模板的定义格式定义格式templateclass T1, class T2, ..., class Tn class 类模板名 {// 类内成员定义 };templateclass A class Stack { public:Stack(int capaicty 4){_a new A[capaicty];_size 0;_capaicty capaicty;}~Stack(){delete[] _a;_size _capaicty 0;} private:A* _a;int _size;int _capaicty; }; int main() {//通过类模板我们可以同时创建int和double类型的栈Stack intst1;Stack doublest2;return 0;}3.2 类模板的实例化类模板实例化与函数模板实例化不同类模板实例化需要在类模板名字后跟然后将实例化的类型放在中即可类模板名字不是真正的类而实例化的结果才是真正的类。总结学习过模板后C的学习也会进入一段蜜月期因为之后我们会接着学习stl库这将大大提高我们C代码的编写效率。
http://www.sczhlp.com/news/167709/

相关文章:

  • 网站建设产品编辑的工作内容dedecms招聘网站
  • 建设建设银行甘肃分行网站学校网站建设作用
  • wordpress做PHPseo查询外链
  • 做流量哪个网站好50000免费短视频素材
  • 福州做网站建设服务商上海网站建设 排名
  • 出售源码的网站做请帖的网站
  • 怎么建立网站平台遵义网站建设
  • 网站pv uv 多少算好站wordpress无法上传exe
  • 南昌做网站哪家便宜用户研究网站
  • oppoR9m MTK 6755 开启VCOM的9008模式
  • 关于电脑息屏后自动亮屏的的原因排查及解决方式
  • 完整教程:用mediamtx搭建简易rtmp,rtsp视频服务器
  • 计算机的组成
  • 成都 广告公司网站建设地域性旅游网站建设系统结构
  • 网站静态页面做网站中小型企业网络设计
  • 拍拍网站开发怎么对网站做seo优化
  • 组建 网站开发团队一个公司为什么要做网站
  • 郑州美容网站建设wordpress 评论回信
  • 广州网站开发定制方案怎么样在公司配置服务器做网站
  • 上海网站建设专业公司排名wordpress图片主题中文版
  • 拥有自己的网站网站建设各个模块的功能
  • 网站流量统计数据库设计wordpress 如何调用函数
  • 怎么在企业站建立网站吗学做网站需要什么软件
  • 如何整理网站网站手机版管理链接
  • 三只小猪的题目登网站做网页设计与制作教案详案
  • 用竹片做的网站智慧团建网页
  • 网站建设的整体流程太原网站优化步骤
  • 秦皇岛学网站建设网络服务提供者不得为未满多少岁开展工作
  • 网站开发项目报告百度爱采购怎样入驻
  • 椒江住房和城乡建设部网站当前网站开发的现状