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

深圳市住建局网站官网seo优化专员招聘

深圳市住建局网站官网,seo优化专员招聘,企业网站建设原则是( ),网站兼容一、引言 在我们学习C时,常会用到函数重载。而函数重载,通常会需要我们编写较为重复的代码,这就显得臃肿,且效率低下。 重载的函数仅仅只是类型不同,代码的复用率比较低,只要有新类型出现时,就…

一、引言

在我们学习C++时,常会用到函数重载。而函数重载,通常会需要我们编写较为重复的代码,这就显得臃肿,且效率低下。

 重载的函数仅仅只是类型不同,代码的复用率比较低,只要有新类型出现时,就需要增加对应的函数。此外,代码的可维护性比较低,一个出错可能会导致所有的重载均出错。

那么,模板的出现,就让这些问题有了解决方案。

这里就不得不提及一个概念:泛型编程。

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

而模板则分为函数模板和类模板。

二、函数模板

1、概念

函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。

2、使用

这就是模板的常用格式。

typename是用来定义模板参数关键字,也可以使用class

T则是我们取的名字,也可以不叫T,取成任意名字(比如A)

//模板
template<class T>
template<typename T>
template<typename T1,typename T2>

下面是函数模板的一个简单应用。 

template<typename T>
T Add(const T& x, const T& y)
{return x + y;
}int main()
{cout << Add(2, 3) << endl;return 0;
}

但是,在使用函数模板时有几个点需要注意: 

(1)传参类型不匹配

当传参类型不匹配时,可以采用显式实例化;

也可以使用强制转换,使得类型匹配。

template<typename T>
T Add(const T& x, const T& y)
{return x + y;
}int main()
{cout << Add<int>(1.1, 2) << endl; //显式实例化cout << Add((int)1.1, 2) << endl;return 0;
}

(2)可以定义同名函数吗

当然是可以的。

并且,在调用时,若可以匹配上,则会优先调用它,而非使用模板生成。

template<typename T>
T Add(const T& x, const T& y)
{return x + y;
}int Add(int x, int y)
{return x + y;
}int main()
{cout << Add(2, 3) << endl;//不会使用模板cout << Add<int>(1.1, 2) << endl; //显式实例化cout << Add((int)1.1, 2) << endl;return 0;
}

3、原理

函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。

在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。

三、类模板

1、格式

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

2、使用

这是我们定义的一个栈。

template<class T>
class Stack
{
public:Stack(int capacity = 4):_array(new T[capacity]),_size(0),_capacity(capacity){cout << "Stack()" << endl;}~Stack(){delete[] _array;_size = 0;_capacity = 0;cout << "~Stack()" << endl;}void Push(const T& data){if (_capacity == _size){int newcapacity = _capacity == 0 ? 4 : _capacity * 2;T* tmp = new T[newcapacity];memcpy(tmp, _array, sizeof(T) * _size);_array = tmp;_capacity = newcapacity;}_array[_size] = data;_size++;}private:T* _array;int _size;int _capacity;};

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


int main()
{//Stack是类名,Stack<int>才是类型Stack<int> st1; st1.Push(1);st1.Push(2);st1.Push(3);st1.Push(4);st1.Push(5);Stack<float> st2;st2.Push(1.1);return 0;
}

http://www.zhongyajixie.com/news/1572.html

相关文章:

  • 设计师浏览网站如何建立网页
  • 做词做曲网站挖掘关键词的工具
  • 学校实验室网站建设现状中央网站seo
  • 模板网优酷seo公司 彼亿营销
  • 阿里云做网站号码优化网站性能监测
  • 呼市网站建设seo诊断优化方案
  • 做网站技术网址查询服务器地址
  • 网站没备案如何做淘宝客seo软件开发
  • 没固定ip怎么做网站国内免费域名注册网站
  • 杭州做网站小芒百度指数上多少就算热词
  • 做网站的业务逻辑易观数据app排行
  • 容桂网站制作动态线上推广平台报价
  • 常熟的彩钢板 中企动力做的网站打开百度网页版
  • 网站在线报名怎么做优秀软文范例800字
  • wordpress系统付费西安百度关键词优化
  • 富阳做网站洛洛科技seo服务外包价格
  • 织梦cms网站分页打不开国外网站
  • tomcat做网站属于什么seo关键词优化排名公司
  • 用微魔方做的网站一定要加搜索引擎关键词广告
  • 贵德网站建设小广告公司如何起步
  • 东阿企业做网站推广如何设计与制作网页
  • wordpress地址和站点地址错网络推广工具和方法
  • 怎么建网站手机版百度经验实用生活指南
  • 石家庄网站建设招商网页优化最为重要的内容是
  • 网站建设分金手指排名十三海南seo
  • 微网站工程案例展示关键词优化外包
  • 怎样在网上做环保设备网站seo优化主要做什么
  • 做产品的淘宝客网站seo搜索引擎优化内容
  • 注册表怎么做动态网站市场推广计划书
  • 印章在线制作网站常用的关键词挖掘工具