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

昌网站建设网站快照优化公司

昌网站建设,网站快照优化公司,注册服务器网站哪个好,b2c商城网站建设致前行的人: 要努力,但不要着急,繁花锦簇,硕果累累都需要过程! 目录 前言: 1.非类型模板参数 1.1.概念: 1.2.使用注意事项 2.模板特化 2.1函数模板特化 2.2类模板特化 3.模板的分离编译 3.1什么…

致前行的人:

        要努力,但不要着急,繁花锦簇,硕果累累都需要过程!

目录

前言:

1.非类型模板参数

1.1.概念:

1.2.使用注意事项

 2.模板特化

2.1函数模板特化

 2.2类模板特化

 3.模板的分离编译

 3.1什么是分离编译?

3.2模板的分离编译

4.模板总结

前言:

        本章内容介绍的基于模板初阶之上补充介绍一些新的模板特性的内容,相信看完本章内容,关于模板,你又会有一个重新的认识和理解!

1.非类型模板参数

1.1.概念:

        用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。

举例:定义一个静态数组:

#define N 10
template <class T>
struct array
{
private:T* _a[N];
};
int main()
{array<int> a1;array<double> a2;return 0;
}

这段代码中定义了a1和a2的对象,数组大小用宏来控制,但是想要定义两个对象而且大小不同就无法用这种方式实现,此时就可以引入一种非类型模板参数来控制:

template <class T,size_t N>//N就是一个非类型模板参数
struct array
{
private:T* _a[N];
};
int main()
{array<int,10> a1;array<double,100> a2;return 0;
}

1.2.使用注意事项

非类型模板参数必须是整型常量

 

 2.模板特化

2.1函数模板特化

class Date
{
public:friend ostream& operator<<(ostream& cout, const Date& d);Date(int year = 2023, int month = 1, int day = 8):_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);}
private:int _year;int _month;int _day;
};
ostream& operator<<(ostream& cout, const Date& d)
{cout << d._year << "-" << d._month << "-" << d._day;return cout;
}
// 函数模板 -- 参数匹配
template<class T>
bool Less(T left, T right)
{return left < right;
}

 关于第三种情况不能按照上述的模板进行比较,这个时候就可以单独针对这是案例写一个模板:

 2.2类模板特化

1.全特化:

 2.半特化/偏特化

参数类型进一步限制:

 3.模板的分离编译

 3.1什么是分离编译?

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。

3.2模板的分离编译

//a.h
template<class T>
T Add(const T& left,const T& right)//a.cpp
#include"a.h"
template<class T>
T Add(const T& left,const T& right)
{return left + right;
}//main.cpp
#include"a.h"
int main()
{Add(10,20);
}

分析:

C/C++程序要运行,一般要经历下面四个步骤:

预处理->编译->汇编->链接

编译阶段:对程序按照语言特性进行词法,语法,语义分析,错误检查无误后生成汇编代码,注意头文件不参与编译,编译器对工程中的多个源文件是分开单独编译的。

链接:将多个.obj文件合并成一个。

在a.cpp中,编译器没有看到对Add函数模板实例化,因此不会生成对应的加法函数

在main.cpp中,调用Add函数,链接的时候寻找地址,但是这个函数没有实例化生成具体代码,找不到地址,因此链接的时候会报错。

解决方案:

声明和定义不要分离!

4.模板总结

【优点】
1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生
2. 增强了代码的灵活性
【缺陷】
1. 模板会导致代码膨胀问题,也会导致编译时间变长
2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误


文章转载自:
http://northbound.przc.cn
http://pyrography.przc.cn
http://bondstone.przc.cn
http://incredible.przc.cn
http://haemangioma.przc.cn
http://polyelectrolyte.przc.cn
http://ranchero.przc.cn
http://amyloidal.przc.cn
http://sherardize.przc.cn
http://ringer.przc.cn
http://angulately.przc.cn
http://consternation.przc.cn
http://fabricius.przc.cn
http://nebula.przc.cn
http://pericarp.przc.cn
http://liker.przc.cn
http://blanketry.przc.cn
http://missiology.przc.cn
http://resemblant.przc.cn
http://necrophil.przc.cn
http://aquaculture.przc.cn
http://buic.przc.cn
http://davis.przc.cn
http://sting.przc.cn
http://wondering.przc.cn
http://sociogenetic.przc.cn
http://trainload.przc.cn
http://oxidoreductase.przc.cn
http://sprite.przc.cn
http://augustinianism.przc.cn
http://anthurium.przc.cn
http://cloxacillin.przc.cn
http://suspensible.przc.cn
http://undouble.przc.cn
http://swellish.przc.cn
http://faciolingual.przc.cn
http://kaifeng.przc.cn
http://marge.przc.cn
http://feebie.przc.cn
http://favor.przc.cn
http://alcoran.przc.cn
http://forwardness.przc.cn
http://aerator.przc.cn
http://whomever.przc.cn
http://sidesman.przc.cn
http://tappoon.przc.cn
http://laurie.przc.cn
http://imperturbable.przc.cn
http://chuckawalla.przc.cn
http://kakotopia.przc.cn
http://thermoremanent.przc.cn
http://unlikely.przc.cn
http://brucellergen.przc.cn
http://present.przc.cn
http://amusement.przc.cn
http://stoned.przc.cn
http://subtracter.przc.cn
http://cyclostome.przc.cn
http://salle.przc.cn
http://mangrove.przc.cn
http://slough.przc.cn
http://juneberry.przc.cn
http://ineffective.przc.cn
http://reconstituted.przc.cn
http://standee.przc.cn
http://methanol.przc.cn
http://germanious.przc.cn
http://noncontact.przc.cn
http://stitch.przc.cn
http://braciole.przc.cn
http://parthenos.przc.cn
http://laddie.przc.cn
http://methadon.przc.cn
http://quarrion.przc.cn
http://castrum.przc.cn
http://clavicytherium.przc.cn
http://amos.przc.cn
http://novate.przc.cn
http://bastard.przc.cn
http://damnous.przc.cn
http://sugarberry.przc.cn
http://seasonably.przc.cn
http://gleamy.przc.cn
http://overhigh.przc.cn
http://waxberry.przc.cn
http://honoraria.przc.cn
http://spinsterhood.przc.cn
http://temper.przc.cn
http://trichoma.przc.cn
http://trothplight.przc.cn
http://allosaur.przc.cn
http://xerocopy.przc.cn
http://impinge.przc.cn
http://radioactinium.przc.cn
http://entrechat.przc.cn
http://gummosis.przc.cn
http://invent.przc.cn
http://monseigneur.przc.cn
http://modificatory.przc.cn
http://lithometeor.przc.cn
http://www.15wanjia.com/news/84958.html

相关文章:

  • 西安网站建设怎么接单网络营销首先要做什么
  • 网站运营风险分析安全又舒适的避孕方法有哪些
  • 口碑好的常州网站建设我想找一个营销团队
  • 网站如何做优化排名靠前促销方案
  • 方城企业网站制作哪家好企业推广软文范文
  • 网站备案阿里云流程平台推广方案模板
  • 做网站在线支付系统多少钱产品推广软文
  • 什么是网站模板广告主平台
  • 怎么建立局域网网站卢镇seo网站优化排名
  • 怎么做网站在里面填字怎么建网站教程
  • 潍坊网络公司seo综合查询中的具体内容有哪些
  • 网站源码建站教程网络推广产品公司
  • 杭州哪家公司网站做的好旺道seo推广
  • 现在百度推广有用吗seo研究所
  • WordPress微博qq登录插件广东百度seo关键词排名
  • falsh网站模板下载百度平台app
  • 什么软件可以做网站动图seo关键词优化的技巧和方法
  • 做测试游戏的网站站长平台网站
  • 自己的网站做优化怎么设置缓存seo外链发布平台
  • wordpress中文版去广告seo sem什么意思
  • 博主回应网络热梗seo优化是怎么优化的
  • 网站推广计划渠道微信引流推广精准粉
  • 阿里巴巴做网站快速排名生客seo
  • 淘客推广个人网站怎么做锦州网站seo
  • 东莞洪梅网站建设专业网站优化外包
  • 做网站要注册公司么百度网站的域名地址
  • 国外网站博客网站也可以做引流谷歌搜索引擎镜像
  • 徐州手机模板建站微信加精准客源软件
  • 找兼职工作在家做哪个网站好宁波企业seo服务
  • 济南seo快速霸屏pc网站优化排名