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

电子商务网站开发背景与原因宾爵手表官方网站

电子商务网站开发背景与原因,宾爵手表官方网站,无锡网站制作联系电话,新手做电影网站在之前我出过一篇博客介绍了模版的初阶:面向对象程序设计(C)模版初阶#xff0c;接下来我们将进行模版的进阶学习#xff0c;介绍关于更多模版的知识 1.非类型模版参数 模板参数分类类型形参与非类型形参 类型形参即#xff1a;出现在模板参数列表中#xff0c;跟在class或… 在之前我出过一篇博客介绍了模版的初阶:面向对象程序设计(C)模版初阶接下来我们将进行模版的进阶学习介绍关于更多模版的知识 1.非类型模版参数  模板参数分类类型形参与非类型形参 类型形参即出现在模板参数列表中跟在class或者typename之类的参数类型名称 非类型形参就是用一个常量作为类(函数)模板的一个参数在类(函数)模板中可将该参数当成常量来使用 非类型模版参数相较于宏更加灵活array中就使用到了非类型模版参数相当于静态数组可以根据需要开辟指定大小的数组array的好处就是可以对于越界检查很有效并且在栈上开空间比在堆上更加高效栈上开空间是向下生长从高地址到低地址 一般来说普通数组会在数组末尾设置标志位如果标志位被改变就越界报错所以一般对于读则不会越界警告而写入数据会报错 注意 1. 浮点数、类对象以及字符串是不允许作为非类型模板参数的 2. 非类型的模板参数必须在编译期就能确认结果 非类型模版 相比与宏更加灵活 只能用于整型其他类型不可以,char/int/short/bool等整型 C20支持double类型 templatesize_t N class Stack { private:int _a[N];int _top; };int main() {Stack5 a1;Stack10 a2;return 0; }------------------------------------------------------------------------------------------ 使用了非类型模版的结构 array:静态数组 对于越界检查很有效 在栈上开空间比在堆上更加高效 栈上开空间是向下生长从高地址到低地址int main() {//一般来说普通数组会在数组末尾设置标志位如果标志位被改变就越界报错//所以一般对于读则不会越界警告而写会int a[10] { 0 };cout a[11] endl;a[11] 1;//静态数组对于越界访问的读与写都会报错arrayint, 10 b;cout b[11] endl;b[11] 1;return 0; } 2.模版的特化 通常情况下使用模板可以实现一些与类型无关的代码但对于一些特殊类型的可能会得到一些 错误的结果需要特殊处理比如实现了一个专门用来进行小于比较的函数模板 注意一般情况下如果函数模板遇到不能处理或者处理有误的类型为了实现简单通常都是将该 函数直接给出 函数模板的特化步骤 1. 必须要先有一个基础的函数模板 2. 关键字template后面接一对空的尖括号 3. 函数名后跟一对尖括号尖括号中指定需要特化的类型 4. 函数形参表: 必须要和模板函数的基础参数类型完全相同如果不同编译器可能会报一些奇怪的错误 特化 templateclass T bool LessFun(const T left, const T right) {return left right; }特化 这里注意上面的const修饰的是left本身所以下面特化的const需要在*右边 template bool LessFunDate*(Date* const left, Date* const right) {return *left *right; }//推荐 bool LessFun(Date* const left, Date* const right) {return *left *right; } 2.1全特化 全特化即是将模板参数列表中所有的参数都确定化 类模版特化 1.全特化 templateclass T1, class T2 class Data { public:Data() { cout DataT1,T2 endl; } private:T1 _d1;T2 _d2; };template class Dataint,char { public:Data() { cout Dataint,char endl }; }2.2偏特化 偏特化任何针对模版参数进一步进行条件限制设计的特化版本 //2.半特化、偏特化 templateclass T1 class DataT1, double { public:Data() { cout DataT1,double endl }; };//偏特化特殊类型 //传的类型是指针 templateclass T1,class T2 class DataT1*, T2* { public:Data() { cout DataT1*,T2* endl }; };//传的是引用 templateclass T1,class T2 class DataT1, T2 { public:Data() { cout DataT1*,T2* endl }; };2.2.1部分特化 将模板参数类表中的一部分参数特化 // 将第二个参数特化为inttemplate class T1 class DataT1, int{public:Data() {coutDataT1, int endl;}private:T1 _d1;int _d2; }; 2.2.2参数更进一步限制  偏特化并不仅仅是指特化部分参数而是针对模板参数更进一步的条件限制所设计出来的一 个特化版本 //两个参数偏特化为指针类型 template typename T1, typename T2 class Data T1*, T2* { public:Data() {coutDataT1*, T2* endl;}private:T1 _d1;T2 _d2; };//两个参数偏特化为引用类型template typename T1, typename T2class Data T1, T2{public:Data(const T1 d1, const T2 d2): _d1(d1), _d2(d2){coutDataT1, T2 endl;}private:const T1 _d1;const T2 _d2;    };void test2 () {Datadouble , int d1;      // 调用特化的int版本Dataint , double d2;      // 调用基础的模板    Dataint *, int* d3;       // 调用特化的指针版本Dataint, int d4(1, 2);  // 调用特化的指针版本} 3.模版的分离编译 一般地模版不建议声明与定义分离如果使用的话有如下解决方法 1. 将声明和定义放到一个文件 xxx.hpp 里面或者xxx.h其实也是可以的。推荐使用这种 2. 模板定义的位置显式实例化。这种方法不实用不推荐使用
http://www.w-s-a.com/news/738461/

相关文章:

  • 网站图片文字排版错误管理系统界面设计
  • 网站建设 台州广州惠科互联网技术有限公司
  • 网站页面尺寸大小四川鸿业建设集团网站
  • 做女朋友的网站局网站建设方案word
  • 做阿里国际网站会有成效吗科技网站有哪些
  • 高端公司网站建设北京两学一做网站
  • 黄埔网站建设设计wordpress 文件夹改名
  • 怎么什么软件可以吧做网站最火的二十个电商app
  • wordpress theme sage网站seo优化加推广
  • 建设一个大型电影网站公司网站建设工作总结
  • 传奇网站一般怎么做的宇泽佛山网站建设
  • google网站入口电商运营十大基础知识
  • 建设公司网站的细节中国建设网网站
  • 重庆美邦建网站宝安网页设计
  • 建网站的地址十堰做网站
  • 怎么评判一个网站做的好与坏专做情侣装网站
  • 网站管理助手v3历史上的今天 网站如何做
  • 网站建设与管理的就业方向网站开发前端模板
  • 对网站建设的维护深圳网络推广推荐
  • wordpress多站共享授权码wordpress数据库缓存插件
  • 建一个购物网站多少钱上海商标注册
  • 琪觅公司网站开发面点培训学校哪里有
  • 北京建设工程信息网站江苏企业网站建设
  • php电子商务网站建设wordpress新建的页面如何加xml
  • 去百度建网站外贸业务推广
  • 百度seo 站长工具网络营销课程个人总结3000字
  • 设计品牌网站wordpress商城 中文站
  • 公司网站要备案吗百度售后电话人工服务
  • 北京移动网站建设制作一个购物网站
  • 网站优化排名如何做网络开发工程师