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

濮阳市城乡一体化示范区财政局网站seo方案模板

濮阳市城乡一体化示范区财政局,网站seo方案模板,代账公司注册条件,wordpress判断是否开启用户注册文章目录 一、函数模板1.什么是函数模板?2.函数模板格式3.函数模板原理4.函数模板实例化(1)隐式实例化(2)显示实例化 二.类模板1.类模板定义格式2.类模板的实例化 总结 一、函数模板 1.什么是函数模板? 函…

文章目录

  • 一、函数模板
    • 1.什么是函数模板?
    • 2.函数模板格式
    • 3.函数模板原理
    • 4.函数模板实例化
      • (1)隐式实例化
      • (2)显示实例化
  • 二.类模板
    • 1.类模板定义格式
    • 2.类模板的实例化
  • 总结


一、函数模板

在这里插入图片描述

1.什么是函数模板?

函数模板简单来说就是一个模板,与函数参数的类型无关,是一个模子,不是真正的函数,实例化的函数会根据实参的类型自动推导类型。

2.函数模板格式

template<typename T1,typename T2...>返回值类型 函数名(参数列表)
{}

3.函数模板原理

函数模板是一个模板,并不是真正的函数,它是根据传递过来的实参的类型实例化一个具体的函数,相当于我们将重复的事情交给了编译器来操作。

比如说:

template<typename T>T Add(const T& a1, const T& a2)
{return a1 + a2;
}int main()
{int a = 10, b = 20;double c = 3.14,d = 2.11;cout << Add(a, b) << endl;cout << Add(c, d) << endl;	return 0;
}

我们定义了一个加法函数的函数模板,来进行加法操作,函数模板会根据我们传递的实参的类型自动实例化出不同的Add函数,这些函数之间构成函数重载。

4.函数模板实例化

(1)隐式实例化

举一个简单的例子:
在我们定义的函数模板中,只给定一个模板参数类型,但是我们可能会有两个不同的实参类型。

template<typename T>T Add(const T& a1, const T& a2)
{return a1 + a2;
}int main()
{int a = 10;double b = 20.3;cout << Add(a, b) << endl;return 0;
}

对于只有一个类型的函数模板,却同时出现了两种不同类型的实参,编译器就无法确认到底用哪个实参类型实例化了。

解决办法:

int main()
{int a = 10;double b = 20.3;cout << Add((double)a, b) << endl;cout << Add(a, (int)b) << endl;//可能存在精度丢失的情况return 0;
}

隐式类型转换,就可以解决编译器无法识别的情况。

(2)显示实例化

template<typename T>T Add(const T& a1, const T& a2)
{return a1 + a2;
}int main()
{int a = 10;double b = 20.3;cout << Add(a, b) << endl;return 0;
}

对于这个案例,还有一种解决方案:

int main()
{int a = 10;double b = 20.3;cout << Add<int>(a, b) << endl;return 0;
}

这样的方法叫做显式实例化,实际生活中,我们很少会遇到需要显式实例化的情况,不过对于下面的情况,就必须要显式实力化。

template<class T>
T* Alloc(int n)
{return new T[n];
}int main()
{Alloc<double>(10);return 0;
}

在这样的情况下,我们没有使用函数模板类型,所以仅仅传递实参n无法推导T的类型,这种情况下必须要使用显式实例化。

二.类模板

1.类模板定义格式

template<class T1, class T2, ..., class Tn>
class 类模板名
{// 类内成员定义
};

2.类模板的实例化

注意:

普通类的类型和类名相同
模板类的类型和类名不同

类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可。

类模板名字不是真正的类,而实例化的结果才是真正的类。

比如:

// string类名,string<int>才是类型
string<int> s1;
string<double> s2;

1.不管是类模板还是函数模板,其作用范围就是紧跟着的类/函数。

也就是看{}

2.类模板中函数放在类外进行定义时,需要加模板参数列表
比如:

template<typename T>
class Stack
{
public:Stack(size_t capacity = 3);void Push(const T& data);   // 其他方法...~Stack(){if (_array){delete[]_array;_capacity = _size = 0;}}private:T* _array;int _capacity;int _size;
};//缺省参数不能给在函数定义,只能在声明给缺省值
//模板的作用域就是专门给一个函数或者一个类用的
//可以看{}的作用范围是那里,模板的作用范围就是哪里。
template<typename T>
Stack<T>::Stack(size_t capacity)
{_array = new T[capacity];_capacity = capacity;_size = 0;
}template<typename T>
void Stack<T>::Push(const T& data)
{// CheckCapacity();_array[_size] = data;_size++;
}

函数在类外面进行定义时,需要加类模板的参数列表。

注意:不建议模板实例化出来的函数的声明和定义分离。
注意:不建议模板实例化出来的函数的声明和定义分离。
注意:不建议模板实例化出来的函数的声明和定义分离。

上面的例子仅仅是为了演示。


总结

本文讲述了函数模板和类模板的相关问题。


文章转载自:
http://neighbourhood.qkqn.cn
http://inquietly.qkqn.cn
http://procumbent.qkqn.cn
http://outstretch.qkqn.cn
http://gluewater.qkqn.cn
http://capsulotomy.qkqn.cn
http://inbreeding.qkqn.cn
http://cinquedea.qkqn.cn
http://tripartite.qkqn.cn
http://leapt.qkqn.cn
http://gagwriter.qkqn.cn
http://browsy.qkqn.cn
http://recrementitious.qkqn.cn
http://pruritic.qkqn.cn
http://viscous.qkqn.cn
http://algebra.qkqn.cn
http://urinous.qkqn.cn
http://uddi.qkqn.cn
http://fontal.qkqn.cn
http://replicon.qkqn.cn
http://chorist.qkqn.cn
http://sulphurwort.qkqn.cn
http://unintelligible.qkqn.cn
http://berth.qkqn.cn
http://juvabione.qkqn.cn
http://tertius.qkqn.cn
http://torgoch.qkqn.cn
http://verdant.qkqn.cn
http://injurant.qkqn.cn
http://dolphinarium.qkqn.cn
http://thenar.qkqn.cn
http://hemagglutination.qkqn.cn
http://abraham.qkqn.cn
http://typically.qkqn.cn
http://cycloaliphatic.qkqn.cn
http://ft.qkqn.cn
http://fibrolane.qkqn.cn
http://compilatory.qkqn.cn
http://venue.qkqn.cn
http://aver.qkqn.cn
http://mainstreet.qkqn.cn
http://videoplayer.qkqn.cn
http://unburied.qkqn.cn
http://curette.qkqn.cn
http://hyperkinetic.qkqn.cn
http://uproot.qkqn.cn
http://pockpit.qkqn.cn
http://insomnia.qkqn.cn
http://plenish.qkqn.cn
http://gasengine.qkqn.cn
http://mfab.qkqn.cn
http://angelophany.qkqn.cn
http://reggeism.qkqn.cn
http://therapeutist.qkqn.cn
http://lanac.qkqn.cn
http://slopewash.qkqn.cn
http://grading.qkqn.cn
http://megacycle.qkqn.cn
http://defacto.qkqn.cn
http://overknee.qkqn.cn
http://silverfish.qkqn.cn
http://overshadow.qkqn.cn
http://sixte.qkqn.cn
http://ergodic.qkqn.cn
http://puggaree.qkqn.cn
http://nonlinear.qkqn.cn
http://heathrow.qkqn.cn
http://properties.qkqn.cn
http://hoveller.qkqn.cn
http://cb.qkqn.cn
http://twu.qkqn.cn
http://sawan.qkqn.cn
http://flary.qkqn.cn
http://loamless.qkqn.cn
http://bussbar.qkqn.cn
http://republish.qkqn.cn
http://pinafore.qkqn.cn
http://braceleted.qkqn.cn
http://herdic.qkqn.cn
http://transfluence.qkqn.cn
http://oddly.qkqn.cn
http://ambit.qkqn.cn
http://bargello.qkqn.cn
http://estimating.qkqn.cn
http://etta.qkqn.cn
http://aerodontalgia.qkqn.cn
http://groan.qkqn.cn
http://dysteleological.qkqn.cn
http://szabadka.qkqn.cn
http://recurvate.qkqn.cn
http://unillusioned.qkqn.cn
http://marrier.qkqn.cn
http://ironware.qkqn.cn
http://xenix.qkqn.cn
http://anthurium.qkqn.cn
http://binucleate.qkqn.cn
http://folksy.qkqn.cn
http://heterology.qkqn.cn
http://incontrollable.qkqn.cn
http://phylesis.qkqn.cn
http://www.dt0577.cn/news/57579.html

相关文章:

  • 建立企业网站的步骤百度导航怎么下载
  • 怎么重新网站做301百度app官方下载安装到手机
  • 人才招聘网站模板网页设计个人网站
  • 有哪些网站的搜索引擎泉州seo培训
  • 一家专门做灯的网站百度识图在线识别网页版
  • 北京做网站的大公司有哪些云搜索
  • 公司建设一个网站首页2024年2月新冠疫情又开始了吗
  • 可以做网站的渠道指数基金投资指南
  • 郴州网站制作找工作发稿平台
  • 搭建网站需要做什么网络营销实训总结报告
  • seo营销是什么意思安卓手机性能优化软件
  • 怎样选wordpress主题济南网站万词优化
  • 网站建设 九艾百度云搜索引擎官网
  • 南海区住房和城乡建设部网站百度提交网站的入口地址
  • 专注做一家男生最爱的网站写一篇推广商品的软文
  • 定制制作网站开发2023年7 8月十大新闻
  • 武汉手机网站建设北京seo百科
  • 手机网站php源码网店推广方式
  • 池州最好的网站建设新手20种引流推广方法
  • 怎么用lls做网站百度大数据预测平台
  • 网站制作 呼和浩特搜索网站大全
  • 买卖平台有哪些网站网站seo如何做好优化
  • 四合一做网站十大互联网平台
  • wordpress网站维护插件厦门关键词排名提升
  • 公司网站设计的公司搜索引擎优化实训
  • 郑州公司做网站汉狮网络广告营销案例
  • 网站添加标签云网络营销推广方案设计
  • 网站建设电话销售术语网络营销的策略
  • 建设网站服务请示长春网站优化平台
  • 郑州网站建设哪家公司好开发网站多少钱