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

开发网站开票名称是什么原因猪八戒设计网站官网

开发网站开票名称是什么原因,猪八戒设计网站官网,兴县做网站,网站开发询价表模板下载1. 泛型编程实现一个通用的交换函数#xff0c;使用函数重载虽然可以实现#xff0c;但是有以 下几个不好的地方#xff1a;1. 重载的函数仅仅是类型不同#xff0c;代码复用率比较低#xff0c;只要有新类型出现时#xff0c;就需要用户自己增加对应的函数2. 代码的可维…1. 泛型编程实现一个通用的交换函数使用函数重载虽然可以实现但是有以 下几个不好的地方1. 重载的函数仅仅是类型不同代码复用率比较低只要有新类型出现时就需要用户自己增加对应的函数2. 代码的可维护性比较低一个出错可能所有的重载均出错因此我们可以给编译器一个模子让编译器根据不同的类型利用该模子来生成代码呢泛型编程编写与类型无关的通用代码是代码复用的一种手段。泛型编程代码可以处理不同类型不同结构的数据模板是泛型编程的基础但模板不等于泛型编程。2. 函数模板2.1 函数模板概念 函数模板与类型无关在使用时被参数化根据实参类型产生函数的特定类型版本。方法要通用在实现时类型就不能具体化--类型给具体了方法只能处理该种类型其他处理不了2.1 函数模板格式templatetypename T1, typename T2,......,typename Tn返回值类型 函数名(参数列表){}举例加法模板#includeiostream using namespace std;//方法要通用在实现时类型就不能具体化--类型给具体了方法只能处理该种类型其他处理不了 //要告诉编译器T是一个类型 //typedef double T; 这种方式错误实际上还是double类型//定义一个ADD模板 templatetypename T T Add(const T left, const T right) {cout typeid(T).name() endl;return left right; }int main() {Add(10, 20);Add(10.2, 2.0);return 0; }注意typename是用来定义模板参数关键字也可以使用class(但是一般不用class定义类不要引起歧义)(不能使用struct代替class) 这也是二者区别之一2.3 函数模板的原理函数模板不是一个函数是一个规则在实例化之前只是对模板进行简单的语法检测在实例化之后根据用户对函数模板的实例化结果来生成处理对应类型的代码并对这些代码进行再次编译在编译器编译阶段对于模板函数的使用编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如当用double类型使用函数模板时编译器通过对实参类型的推演将T确定为double类型然后产生一份专门处理double类型的代码对于字符类型也是如此ADD12 //都为Int认为T为int类型则会根据模板生成处理int类型的ADDint函数 ADD2.14.2 //都为double认为T为double类型则会根据模板生成处理double类型的ADDdouble函数 ADD12 //都为char认为T为char类型则会根据模板生成处理int类型的ADDchar函数ADD12.2 //T到底设置为int,还是double类型编译器无法确定解决方法如下1.强转ADD1int2.22.增加模板templatetypename T, typename S对模板进行显式实例化明确指明模板参数列表中T的实际类型ADDdouble(1,2.2);2.4 函数模板的实例化 显式实例化在函数名后的中指定模板参数的实际类型显式实例化:明确指定了参数类表中T的实际类型不需要推演T的类型如上代码举例如果类型不匹配编译器会尝试进行隐式类型转换如果无法转换成功编译器将会报错隐式实例化没有明确指出参数类表中T的实际类型编译器需要推演用户传递的类型来确定模板参数列表T的类型如2.1中代码例子3. 类模板3.1 类模板的定义格式templateclass T1, class T2, ..., class Tn class 类模板名 {// 类内成员定义 }; // 动态顺序表 // 注意Vector不是具体的类是编译器根据被实例化的类型生成具体类的模具 templateclass T class Vector { public :Vector(size_t capacity 10): _pData(new T[capacity]), _size(0), _capacity(capacity){}// 使用析构函数演示在类中声明在类外定义。~Vector();void PushBack(const T data)void PopBack()// ...size_t Size() {return _size;}T operator[](size_t pos) {assert(pos _size);return _pData[pos];}private:T* _pData;size_t _size;size_t _capacity; }; // 注意类模板中函数放在类外进行定义时需要加模板参数列表 template class T VectorT::~Vector() {if(_pData)delete[] _pData;_size _capacity 0; }3.2 类模板的实例化类模板实例化与函数模板实例化不同类模板实例化需要在类模板名字后跟然后将实例化的类型放在中即可类模板名字不是真正的类而实例化的结果才是真正的类// Vector类名Vectorint才是类型 Vectorint s1; Vectordouble s2;
http://www.w-s-a.com/news/127352/

相关文章:

  • 做一个小网站需要多少钱wordpress集成paypal
  • 加强网站建设管理 及时更新自己设计装修的app
  • 集团网站设计案例网页制作网站开发
  • 怎么优化网站的单个关键词排名惠州品牌网站建设
  • 上海跨境电商网站制作wordpress弃用react
  • phpcms网站模版下载电商网站建设属于研发费用吗
  • 动画毕业设计代做网站高校门户网站建设需要多少钱
  • 网站内链设置wordpress前台特别慢
  • 杭州模板网站建设系统江苏省建设考试网站准考证打印
  • 国家建设执业资格注册中心网站企业手机网站建设机构
  • 内容管理系统做网站怎么做英文版的网站
  • 浙江省专业网站制作网站建设网站设计及内容策划
  • 浙江门户网站建设公司做网站上哪买空间
  • 郑州网站怎么推广贵阳市网站建设
  • 规范网站建设福州外贸网站建设推广
  • 平台电商网站开发传媒公司排行
  • 在哪给人做网站怎么样制作一个网页
  • 网站更改文章标题广西新闻
  • 专业做网站路桥寺院网站建设方案
  • 网站维护与优化教程广州做网站的网络公司排名
  • 网站做贷款许可证网站改版方案模板
  • 装饰公司怎么做网站嘉兴网站制作推广
  • 深圳兼职做网站涿州网站制作
  • 能找本地人做导游的网站app模板素材下载免费
  • 网站积分的作用网站开发需要看相关书籍
  • 建设银行总行网站alexa排名与什么有关系
  • 阿里云服务器发布网站收款网站怎么建设
  • 开发东莞网站制作公司做网站优化步骤
  • 网站版权信息的正确写法如何制作网络游戏
  • 郑州移动端网站建设如何在网上推广自己的公司