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

如何自主建设企业网站免费人脉推广

如何自主建设企业网站,免费人脉推广,手机在线建站,wordpress apk模板初阶 前言1.定义模板2.函数模板2.1定义2.2实例化函数模板2.3模板参数的匹配原则 3.类模板3.1类模板实例化 前言 模板是C中泛型编程的基础,一个模板就是一个创建类和函数的蓝图或公式。 1.定义模板 假定我们希望编写一个函数来比较两个值,并指出第…

模板初阶

  • 前言
  • 1.定义模板
  • 2.函数模板
    • 2.1定义
    • 2.2实例化函数模板
    • 2.3模板参数的匹配原则
  • 3.类模板
    • 3.1类模板实例化

前言

模板是C++中泛型编程的基础,一个模板就是一个创建类和函数的蓝图或公式。

1.定义模板

假定我们希望编写一个函数来比较两个值,并指出第一个值是小于,等于还是大于第二个值。我们可以写多个函数重载去比较不同类型的两个值。不仅麻烦繁琐,而且还要考虑所有类型。

2.函数模板

2.1定义

我们可以定义一个通用的函数模板,而不是为每个类型都定义一个新函数。一个模板就是一个公式,可用来生成针对特定类型的函数版本,例如上文的比较两个值。

//如果两个值相等,返回0,如果v1小返回-1,如果v2小返回1
template <typename T>
int compare(const T& v1, const T& v2)
{if (v1 < v2) return -1;if (v1 > v2) return 1;return 0;
}

模块定义以关键字template开始,后跟一个模块参数列表,用逗号分隔的一个或多个模块参数的列表,用<,>包围起来。

2.2实例化函数模板

用不同的类型,使用函数模板,就叫做模板参数实例化。模板参数实例化分为隐式实例化和显示实例化。
(1).隐式实例化:让编译器根据实参推演模板参数的实际类型

template<class T>
T Add(const T & a, const T& b)
{return a + b;
}
int main()
{int x = 0;int y = 1;double c = 1.2;double d = 2.1;Add(x, y);Add(c, d);Add(x, (int)d);//有问题,因为模板参数列表只有一个T,无法判断是int 还是 double //所以此时选择强转或者显示类型转换return 0;

(2).显示实例化:在函数名后的<>中指定模板参数的实际类型

int main(void)
{int a = 10;double b = 20.0;// 显式实例化Add<int>(a, b);return 0;
}

如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。

2.3模板参数的匹配原则

(1).一个非模板函数可以和一个同名的模板函数同时存在,而且该函数还可以被实例化成这个非模板函数。

int Add(int left, int right)
{return left + right;
}
// 通用加法函数
template<class T>
T Add(T left, T right)
{return left + right;
}
void Test()
{Add(1, 2); // 与非模板函数匹配,编译器不需要特化Add<int>(1, 2); // 调用编译器特化的Add版本
}

(2).对于非模板函数和同名函数模板,如果其他条件都相同,在调动时会优先调用非模板函数而不会从该模板产生出一个实例。如果模板可以产生一个具有更好匹配的函数, 那么将选择模板。
(3).模板函数不允许自动类型转换,但普通函数可以进行自动类型转换。

3.类模板

类模板是用来生成类的蓝图的,与函数模板不同的是,编译器不能为类模板推断类模板的参数类型。

template<class T1, class T2, ..., class Tn>
class 类模板名
{// 类内成员定义
};
#include<iostream>
using namespace std;
// 类模版
template<typename T>
class Stack
{
public:Stack(size_t capacity = 4){_array = new T[capacity];_capacity = capacity;_size = 0;}void Push(const T& data);
private:T* _array;size_t _capacity;size_t _size;
};
template<class T>
void Stack<T>::Push(const T& data)

3.1类模板实例化

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

Stack<int> st1; // int
Stack<double> st2; // double
http://www.dtcms.com/wzjs/190381.html

相关文章:

  • 汕头网站建设公司开鲁seo网站
  • 企业网站制作 西安东莞网络营销推广软件
  • 深圳市住建局长沙关键词优化新报价
  • 头像定制在线生成器网站推广专家十年乐云seo
  • 云南网站建设崇左如何做网站优化seo
  • 建设银行招聘社会招聘网站情感营销经典案例
  • 五莲网站建设维护推广宜昌网站seo收费
  • 网络公司网站优化网站建设鹤壁seo公司
  • 济南手工网站建设微信广告投放推广平台
  • 新华区设计网站公司保定百度推广联系电话
  • 公司网站维护该谁来做百度关键词价格怎么查询
  • 帮人做项目的网站网站功能优化的方法
  • 网站建设备案查询培训网络营销机构
  • 玉林做网站seo提升关键词排名
  • 新手学做网站 pdf 网盘营销策划方案案例
  • 网站备案各种问题汇总个人怎么在百度上打广告
  • 武汉网站建设公司地址培训计划和培训内容
  • 网站建设推广注意什么站牛网是做什么的
  • 石家庄网站建设招商百度一下首页百度一下
  • 侨联网站建设百度网盘在线登录
  • seo网站优化报价百度关键词购买
  • 做家装施工的网站nba东西部最新排名
  • 在做网站编代码网页导航条中的文字出现在导航条的下方怎莫解决北京网站优化经理
  • 老外做牛排的视频网站电商沙盘seo裤子关键词
  • 禄丰网站建设外链发布论坛
  • 制作网架厂家seo实战培训视频
  • 建立网站专业公司windows11优化大师
  • 成交型网站建设价格营销方式方案案例
  • 网页内容修改器seo任务平台
  • 企业网站免费制作西安seo排名扣费