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

教育建设网站淄博中企动力

教育建设网站,淄博中企动力,网站建设云服务器,苏州h5网站建设价格泛型编程#xff1a;编写的是与类型无关的通用代码#xff0c;是代码复用的一种手段#xff0c;模板是泛型编程的基础。 1.函数模板#xff1a;类型参数化#xff0c;增加代码复用性。例如对于swap函数#xff0c;不同类型之间进行交换都需要进行重载#xff0c;但是函数…       泛型编程编写的是与类型无关的通用代码是代码复用的一种手段模板是泛型编程的基础。 1.函数模板类型参数化增加代码复用性。例如对于swap函数不同类型之间进行交换都需要进行重载但是函数体不变就可以体现模板的优越性。 模板参数两种给出方法1.自动类型推导2.显示类型确定 #includeiostream using namespace std;//都是进行交换 //不同类型参数的重载代码冗余复用性低 //模板是将类型当作参数进行传递//函数模板 template typename T void Swap(T a, T b) {cout typeid(T).name() endl;T tmp a;a b;b tmp; }void test01() {int i1 10, i2 20;char c1 a, c2 b;double d1 1.5, d2 5.1;Swap(i1, i2);//自动类型推导Swapchar(c1, c2);//显示类型指定Swapdouble(d1, d2);cout i1 i1 i2 i2 endl;cout c1 c1 c2 c2 endl;cout d1 d1 d2 d2 endl; }void main() {test01();system(pause); } 在自动类型推导中T类型必须一致不然出现二义性。  解决方案1 void test02() {int a 10;//4字节double b 1.23;//8字节Swap(a, (int)b);//Swap((double)a, b);//报错 涉及引用修改了原空间范围Swapint(a, (int)b); } 解决方案2 template typename T1, typename T2 void Swap(T1 a, T2 b) {cout typeid(T1).name() endl;T1 tmp a;a b;b tmp; } 另一个例子 #includeiostream using namespace std;templatetypename T T Func(T a, T b) {T value a b;return value; }void test01() {int a 10;double b 1.35;Func(a, (int)b);Func((double)a, b);//不修改原空间大小可以强转Funcint(a, b); }void main() {test01();system(pause); } 在调用函数模板时并不是直接执行函数模板在编译器底层模板会根据不同的类型传入生成不同的模板函数。所以母体就是函数模板实际执行的是模板函数。所以模板看起来比较简洁但是执行效率不高。 模板实例化调用函数模板生成特定版本函数的过程。隐式实例化-模板类型推导显式实例化通过类型确定。 注意模板不会进行隐式类型转换也就是类型的传入不能产生二义性。普通函数支持隐式类型转换。 当函数模板和普通函数都匹配调用时会采用最佳匹配原则。 #includeiostream using namespace std;templatetypename T T Func(T a, T b) {T value a b;return vale; }int Func(int a, int b) {int value a b;return value; }void test01() {Func(1, 2);//调上面Func(1.1, 2.2);//调下面Func(a, b);//调下面Funcint(a, b);//调下面Funcint(1, 2);//调下面Func(1, 2.1);//调上面 } 类模板类中的数据类型参数化就可以得到类模板。注意函数模板的每一个成员函数在类外实现时都是函数模板需要带上templatetypename T在作用域限定符中也要加上T。 c的类中需要常量可以用这三种方法给出宏定义、 枚举私有成员变量、const常量(私有成员变量)。 #define AAA 8enum { BBB8};const int CCC 8; 模板类的参数可以是一个已经实例化的模板类例如使用vector实现二维数组。 vectorvectorint arr; 类模板实例化时需要指定参数类型它不能推导类型利用类名数据类型 对象名来实例化。 类模板和函数模板都可以用于处理自定义数据类型自定义类需要用到运算符重载。 内置类型的零初始化固定写法系统自动生成不会发生隐式类型转换。其实就是赋各种0值。 零初始化也可以用于类模板用于自定义数据类型。比较灵活。零初始化语法T 变量名 T(); 调动默认构造函数或者全缺省构造函数进行赋值。 #includeiostream using namespace std;void main() {int a int();char ch char();double d double();float f float();system(pause); } 类模板不支持分离编译类模板的成员函数的创建时机在调用时分文件编写时链接不到所以一般通过包含.cpp或者.hpp声明和定义放一起的方式来给出。 extern 关键字让全局变量在同一工程下被不同的.cpp文件外部引入并使用。 STL:标准模板库开个头 六大组件容器、算法、仿函数、迭代器、适配器配接器、空间配置器。 STL缺点更新慢、不支持线程安全、追求效率导致内部复杂、存在代码膨胀的问题。但是作为大佬造好的轮子不会不行 P.J.版本对应vc6.0    SGI版本对应STL源码剖析。 #includeiostream #includelist using namespace std;void test01() {listint mylist;for (int i 0; i 10; i){mylist.push_back(i);}for (auto e : mylist){cout e -;}cout over. endl;for (listint::iterator it mylist.begin(); it ! mylist.end(); it){cout *it -;}cout over.endl; }void main() {test01();system(pause); }
http://www.w-s-a.com/news/528953/

相关文章:

  • 购买空间网站哪个好重庆英文网站建设
  • 建设网站需要注意什么问题设计网页通常使用什么语言
  • 彩票网站建设要多少钱西安英文网站建设
  • 静态班级网站印象云笔记 wordpress
  • 网站表单及商品列表详情模板永川网站制作联系电话
  • 网站建设与维护难不难网络服务机构的网站
  • 用三权重的网站做友链有好处没企业年金怎么查询
  • 工行网站跟建设网站区别wordpress加入地图
  • 网站的风格对比信息表广告门
  • 教育网站建设毕业设计说明书门户网站模式
  • 洛阳霞光建设网站html做分模块的网站
  • 域名建议网站wordpress 伪静态html
  • 网站风格化设计方案免费模式营销案例
  • 凤翔网站建设农村建设自己的网站首页
  • 怎样用网站做单笔外贸建筑设计公司合作加盟
  • 建网站买的是什么网站开发三层结构
  • wordpress图纸管理网站2345网址导航智能主版
  • 想调用等三方网站数据该怎么做培训课程
  • 高端营销网站建设wordpress咨询
  • 网站搜索框如何做创业怎么做网站
  • 网站手机版管理链接产品推广找哪家公司
  • vuejs 可做网站吗蜘蛛互联网站建设
  • 沈阳网站备案查询17zwd一起做业网站
  • 石家庄大型公司建站广州设计网站培训学校
  • 如何让百度收录中文域名网站wordpress前台管理评论
  • 铁岭 建筑公司网站 中企动力建设佛山app开发公司
  • 网站开发用的电脑深圳专业网站建设服务
  • 内容营销价值wordpress博客优化插件
  • 最优惠的郑州网站建设淘宝网商城
  • 做封面网站企业网站优化服务商