我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++模板如何使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++模板如何使用

这篇文章主要讲解了“C++模板如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++模板如何使用”吧!

    一、函数模板

    1.1函数模板概念

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

    1.2 函数模板格式

    template<typename T1, typename T2,&hellip;,typename Tn>

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

    template<class T>void swap(T& a, T& b){T tmp = a;a = b;b = tmp;}

    注意:typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class)

    1.3 函数模板的原理

    函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。所以其实模板就是将本来应该我们做的重复的事情交给了编译器

    C++模板如何使用

    在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。

    1.4 函数模板的实例化

    用不同类型的参数使用函数模板时,称为函数模板的实例化。模板参数实例化分为:隐式实例化和显式实例化

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

    template<class T>T Add(const T& left, const T& right){  return left + right;}int main(){  int a1 = 10, a2 = 20;  double d1 = 10.0, d2 = 20.0;  Add(a1, a2);  Add(d1, d2);    // 此时有两种处理方式:1. 用户自己来强制转化 2. 使用显式实例化  Add(a, (int)d);  return 0;}

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

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

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

    二、类模板

    2.1 类模板的定义格式

    template<class T1, class T2, ..., class Tn>class 类模板名{// 类内成员定义};  // 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具template<class T>class Vector{public :Vector(size_t capacity = 10): _pData(new T[capacity])  , _size(0)  , _capacity(capacity){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();void PushBack(const T& data);void PopBack();// ...size_t Size() {return _size;}T& operator[](size_t pos){  assert(pos < _size);  return _pData[pos];}private:T* _pData;size_t _size;size_t _capacity;};// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表template <class T>Vector<T>::~Vector(){if(_pData)  delete[] _pData;_size = _capacity = 0;}

    2.2类模板的实例化

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

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

    感谢各位的阅读,以上就是“C++模板如何使用”的内容了,经过本文的学习后,相信大家对C++模板如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    C++模板如何使用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    C++模板如何使用

    这篇文章主要讲解了“C++模板如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++模板如何使用”吧!一、函数模板1.1函数模板概念函数模板代表了一个函数家族,该函数模板与类型无关,在
    2023-07-02

    C++的模板如何使用

    这篇文章主要介绍“C++的模板如何使用”,在日常操作中,相信很多人在C++的模板如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的模板如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!一.
    2023-07-02

    C++函数模板如何使用

    本篇内容介绍了“C++函数模板如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C++函数模板templatev
    2023-07-05

    C++中如何使用链栈模板

    本篇文章给大家分享的是有关C++中如何使用链栈模板,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++链栈模板声明template struct Stack
    2023-06-17

    C++ 中如何使用函数模板?

    c++++ 函数模板允许您创建可用于多种数据类型的函数,从而提高代码可重用性。语法为:template 函数名(参数列表),指定类型参数即可使用。实战案例包括在数据结构中使用函数模板,例如可用于任何数据类型的栈类:template cl
    C++ 中如何使用函数模板?
    2024-04-12

    C++ 函数模板中的类模板是如何使用的?

    C++ 函数模板中的类模板C++ 函数模板可以感知类模板,并利用它们作为参数类型。这允许您创建通用函数,适用于各种数据类型和结构。语法templatevoid func(const T& arg1, const
    C++ 函数模板中的类模板是如何使用的?
    2024-04-15

    如何使用c++模板自定义数组

    这篇文章主要介绍了如何使用c++模板自定义数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:制造通用模板,创建自定义的数组,一个数组,里面有这么几个属性,数组容量,数组
    2023-06-29

    Django如何使用jinja2模板

    这篇“Django如何使用jinja2模板”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Django如何使用jinja2模板
    2023-07-05

    win10平板模式如何使用

    这篇文章主要介绍“win10平板模式如何使用”,在日常操作中,相信很多人在win10平板模式如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10平板模式如何使用”的疑惑有所帮助!接下来,请跟着小编
    2023-07-02

    Vue组件模板如何使用

    本篇内容主要讲解“Vue组件模板如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue组件模板如何使用”吧!1. vue组件都是由这三部分组成