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

乐亭中关村建站快车织梦 5.7网站地图

乐亭中关村建站快车,织梦 5.7网站地图,网站正在建设中手机版,快手做电商需要投资多少钱目录​​​​​​​ 一.泛型编程 二.模板 函数模板 类模板 一.泛型编程 在C中,支持函数重载,如果我们通过函数重载实现通用的交换函数,写法如下: void Swap(int& left, int& right) {int temp left;left right;ri…

目录​​​​​​​

一.泛型编程

二.模板

函数模板

类模板


一.泛型编程

在C++中,支持函数重载,如果我们通过函数重载实现通用的交换函数,写法如下:

void Swap(int& left, int& right)
{int temp = left;left = right;right = temp;
}
void Swap(double& left, double& right)
{double temp = left;left = right;right = temp;
}
void Swap(char& left, char& right)
{char temp = left;left = right;right = temp;
}
......

非常冗余,于是我们引入泛型编程的概念:通过编写与类型无关的代码,实现代码的复用。而在C++中,模板就是泛型编程的基础。

二.模板

模板有两种:函数模板和类模板

函数模板

语法:

template<typename T1, typename T2, ..., typename T3>

返回值类型 函数名(参数列表){}

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

样例:

//交换函数模板
template<typename T>
void Swap(const T& x, const T& y)
{T tmp = x;x = y;y = tmp;
}int main()
{int i1 = 1, i2 = 2;double d1 = 1.1, d2 = 2.2;char c1 = 'a', c2 = 'b';//隐式实例化Swap(i1, i2);//隐式(推导)生成void Swap(const int& x, const int& y);Swap(d1, d2);//隐式(推导)生成void Swap(const double& x, const double& y);Swap(c1, c2);//隐式(推导)生成void Swap(const char& x, const char& y);//显式实例化float f1 = 1.1, f2 = 2.2;Swap<float>(f1, f2);//显式(手动)生成void Swap(const float& x, const float& y);return 0;
}

模板函数是一个蓝图,非具体函数,而是编译过程中,编译器根据蓝图生成了具体类型的函数。

模板参数实例化的两种方式:

隐式实例化:编译器根据实参推演模板参数的实际类型

显式实例化:函数名<>,在<>中指定模板参数的实际类型

 如果一个非模板函数和同名函数模板同时存在,且调用时实参和非模板函数完全匹配,编译器会优先调用这个非模板函数。

类模板

语法:

template<typename T1, typename T2, ... , typename Tn>

class 类模板名

{

        //成员定义

};

实现一个栈的类模板:

//Stack
template<typename T>
class Stack
{
public://构造函数Stack(int n = 4):_arr(new T[n]),_top(0),_capacity(n){}//析构函数~Stack(){delete[] _arr;_arr = nullptr;_top = _capacity = 0;}void Push(const T& x){T* tmp = new T[_capacity * 2];memcpy(tmp, _arr, sizeof(T) * _top);delete[] _arr;_arr = tmp;_capacity *= 2;_arr[_top++] = x;}void Pop(){_top--;}//...
private:T* _arr;int _top;int _capacity;
};int main()
{//Stack<int>和Stack<double>是类型,Stack仅仅是类名Stack<int> st_i;//存储int类型数据的栈Stack<double> st_d;//存储double类型数据的栈return 0;
}

 上述代码中,Stack<int>和Stack<double>是显式实例化出的两个存储不同数据类型的栈,它们属于不同的类型。

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

今天的内容就到这,感谢大家的支持!

http://www.sczhlp.com/news/57513/

相关文章:

  • 在Vs中做网站接口网站建设感谢信
  • 仿站多少钱一套宁波高端网站制作公司
  • 凡客建站网wordpress ajax搜索
  • 自己做的网站怎么接入微信wordpress cpanel
  • 事业单位 网站备案西安网站开发招聘
  • 建企业网站步骤一级消防工程师考试通过率多少
  • 如何注册属于自己的网站常州网站推广招聘
  • 招聘网站的建设网站建设推荐中企动力
  • 免费做网站电话自助 建站
  • 做外贸网站买海外域名全国有多少家展馆设计公司
  • 公司设计网站开发手机网站用什么好处
  • 多配色创意metro风格企业网站织梦模板wordpress创建栏目
  • 二级网站内容建设要求吗TOP域名是什么网站
  • 橙色企业网站模板海口高端品牌网站建设
  • 网站建设公众号小程序开发备案网站名称有什么用
  • wordpress模块化建站网络设计工资多少
  • 西安网站seophp网站建设管理教材
  • 江苏省华建建设股份有限网站动漫设计的就业前景
  • 网站文件上传好下一步怎么做合肥建筑网站
  • 简述网站建设与维护贵州企业网站建设案例
  • 找到网站后台地址做网站公司怎么推销
  • html5手机网站发布开发公司前期部岗位职责
  • 成都网站外包优化手机ps抠图软件下载
  • 怎么安装网站源码赣州安全教育平台
  • 宝安网站推广平台wordpress 4.7.4 主题
  • 个体搞网站建设 经营范围wordpress 积分会员
  • 活动软文模板seo概念的理解
  • 柳城网站网站设计制作哪种快
  • 淘客网站开发视频教程开网页多对什么要求高
  • 营销型网站设计内容商城网站开发流程图