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

眉县住房和城乡建设局网站品牌工厂网站建设

眉县住房和城乡建设局网站,品牌工厂网站建设,小程序制作链接,网站优化 pdf一、非类型模板参数 模板参数分为 类型模板参数(C模板的零基础讲解)和非类型模板参数。 看下面的代码 #define N 10 //T就是类型模板参数 templateclass T class Array { private:T a[N]; }; int main() {Arrayint a1;Arraydouble a2;return 0; }上面…一、非类型模板参数 模板参数分为 类型模板参数(C模板的零基础讲解)和非类型模板参数。 看下面的代码 #define N 10 //T就是类型模板参数 templateclass T class Array { private:T a[N]; }; int main() {Arrayint a1;Arraydouble a2;return 0; }上面这个就是类型模板参数能够创建不同类型的数组。 但是现在有一个要求将a1数组的大小设置为10a2的大小设置为100. 上面这个操作并不可以完成。 非类型模板参数代码 类型模板参数定义的是类型而非类型模板参数定义的就是整型常量。 注意只能是整型可以这样认为祖师爷就是为了设置数组的大小所以设置非类型模板参数。 并且不能修改这个也很容易理解不能改变数组的大小。 //T就是类型模板参数 templateclass T,size_t N 20 class Array { private:T a[N]; }; int main() {Arrayint,10 a1; Arraydouble,100 a2;return 0; }这样我们就可以定义不同大小的数组。 二、模板的特化 我先给你们看一个日期类然后在进行我们下面的操作 class Date { public:Date(int year 1900, int month 1, int day 1): _year(year), _month(month), _day(day){}bool operator(const Date d)const{return (_year d._year) ||(_year d._year _month d._month) ||(_year d._year _month d._month _day d._day);}bool operator(const Date d)const{return (_year d._year) ||(_year d._year _month d._month) ||(_year d._year _month d._month _day d._day);}friend ostream operator(ostream _cout, const Date d){_cout d._year - d._month - d._day;return _cout;} private:int _year;int _month;int _day; };现在的要求是利用我们的比较类比较日期的大小。 // 函数模板 -- 参数匹配 templateclass T bool Less(T left, T right) {return left right; } int main() {//比较int类型的数字cout Less(1, 2) endl; // 可以比较结果正确 //比较两个日期类Date d1(2022, 7, 7);Date d2(2022, 7, 8);cout Less(d1, d2) endl; // 可以比较结果正确 比较两个日期类的指针Date* p1 d1;Date* p2 d2;cout Less(p1, p2) endl; // 可以比较结果错误 return 0; }对于比较两个int类型我就不用过多说明。 比较两个日期类我们在日期类中重载了所以可以按照我们想要的要求去比较。 但是对于第三个我们想要比较指针指向的内容但是我们比较的时候确实比较的指针这是不符合我们的要求的。 这时就需要用到模板特化 函数模板特化代码 模板特化就是对某些类型进行特殊化处理 // 函数模板 -- 参数匹配 templateclass T bool Less(T left, T right) {return left right; } //模板特化 template bool LessDate*(Date* left, Date* right) {return *left *right; }函数模板特化的步骤 必须要先有一个基础的函数模板关键字template后面接一对空的尖括号函数名后跟一对尖括号尖括号中指定需要特化的类型函数形参表: 必须要和模板函数的基础参数类型完全相同如果不同编译器可能会报一些奇怪的错误。 类模板特化 类模板的特化分为两种 全特化 偏特化 但是都是建立再原模版之上的。 必须有原模板才能有特化。 全特化 这是针对某个具体的类型进行特化。 templateclass T struct Less {bool operator()(const T left, const T right){return left right;} }; //类模板的特化 template struct LessDate* {bool operator()(const Date* left, const Date* right){return *left *right;} };测试全特化 int main() {Date d1(2022, 7, 7);Date d2(2022, 7, 8);cout LessDate()(d1, d2) endl; Date* p1 d1;Date* p2 d2;cout LessDate*()(p1, p2) endl; return 0; }偏特化 下面这个叫做偏特化就是一种范类进行限制比如下面的指针 当这个类有多个模板参数也可以对部分参数进行偏特化。 可以对任意类型特化甚至是引用。 templateclass T struct Less {bool operator()(const T left, const T right){return left right;} }; //偏特化 templateclass T struct LessT* {bool operator()(const T* left, const T* right){return *left *right;} };int main() {Date d1(2022, 7, 7);Date d2(2022, 7, 8);cout LessDate()(d1, d2) endl; Date* p1 d1;Date* p2 d2;cout LessDate*()(p1, p2) endl; int* a new int(1);int* b new int(2);cout Lessint*()(a, b) endl;return 0; }测试偏特化 int main() {Date d1(2022, 7, 7);Date d2(2022, 7, 8);cout LessDate()(d1, d2) endl; Date* p1 d1;Date* p2 d2;cout LessDate*()(p1, p2) endl; return 0; }三、模板的分离编译 首先先记住一点也是最重要的一点 模板不支持在两个文件的分离编译。 四、模板的优缺点 优点 模板复用了代码节省资源更快的迭代开发C的标准模板库(STL)因此而产生 增强了代码的灵活性 缺陷 模板会导致代码膨胀问题也会导致编译时间变长 出现模板编译错误时错误信息非常凌乱不易定位错误
http://www.hkea.cn/news/14487391/

相关文章:

  • 乐辰科技网站建设dede织梦织梦更换模板网站
  • 做网站需要公司资料吗人力资源外包服务公司
  • 成都建站模板公司上海外贸营销网站建设地址
  • 网站建设需要什么内容做手机网站价格
  • 网站建设推广语删除的网站做404
  • 南京专业网站制作多少钱近三天新闻50字左右
  • 一个可以看qq空间的网站怎么给网站做友情链接
  • 上线了建的网站免费吗免费行情软件app网站排行
  • 网站短期技能培训wordpress 历史版本
  • 山东省建设厅网站中国建设银行邢台分行网站
  • 济宁网站制作唐人旅游网站用dw怎么做
  • 所有的网站都要用htmlu做吗招聘网站做招聘顾问
  • wordpress上传ftpseo关键词排名技巧
  • 沈阳做购物网站电话网络营销方式的优缺点
  • 代做毕业设计网站 道路桥梁100个新公司起名
  • 网页报价单页一般多少网站seo分析
  • 山西手动网站建设推荐平台如何创建一个微信公众号
  • 上海网站建设外包公司网站建设设计计划表
  • asp网站发邮件最新热搜新闻事件
  • 装修公司 网站模板网站开发学习教程
  • 商务网站建设简约个人网站
  • 做外贸需要浏览外国网站深圳被点名
  • 网站搭建软件d东莞知名企业
  • 做盗版视频网站违法吗PHP网站名字
  • 沈阳快速网站建设网站开发江苏省建设工程一站式申报网站
  • 东莞推广seo关键词排名优化大连seo代理计费
  • 新河网站建设顾问建设网站的软件
  • 网站搜索优化方案自学网课程设置
  • 全国各地网站开发外包个人博客网站备案
  • 怎么找网站开发公司网站运作模式