目录

1、定义区别

2、程序举例


1、定义区别

类模板和模板类主要关注点是后一个单词。

类模板:主要描述的是模板,这个模板是类的模板。可以理解为一个通用的类,这个类中的数据成员,成员函数的形参类型以及成员函数的返回值类型不用具体的指定,这些类型都是虚拟的。在使用类模板进行对象定义的时候,才会根据对象的实际参数类型来替代类模板中的虚拟类型。通俗一点来说,可以看作是做蛋糕的模具。类模板标准定义格式如下:

template <typename 类型参数>
class 类名
{类成员声明
};

         或者:

template <class 类型参数>
class 类名
{类成员声明
};

(1)template:这是声明类模板的关键字,表明这是一个类模板。

(2)尖括号<>中,typename和class的作用都一样,都是用作来申明后面的参数是一个虚拟的数据参数类型。

(3)类型参数:用C++标识符:Type或者T来表示,表示这是一个虚拟的数据类型名,此时在类模板中不给定具体的数据类型,实例化成模板类后,就需要给定具体的数据类型。

        模板类:主要描述的是类,这个类使用类模板进行声明。将类模板中的虚拟类型参数指定成一个具体的数据类型参数。通俗一点来说可以看作是通过蛋糕模具做出来的蛋糕。


2、程序举例

1,定义一个比较两个元素大小的类模板;

2,使用该类模板进行实例化,实现用模板类定义对象。

#include <iostream>
using namespace std;
template <class T> //声明一个模板,虚拟数据类型名为T
class Compare //类模板名为Compare
{public :Compare(T a, T b){x = a;y = b;}T max( )  //类模板中的成员函数{return (x > y) ? x : y;}private :T x;T y;
};int main()
{
Compare<int>fun1(5,8);       //用类模板定义对象fun1,此时T被int替代
Compare<float>fun2(9.1,9.7); //用类模板定义对象fun2,此时T被float替代
Compare<char>fun3('a','h');  //用类模板定义对象fun3,此时T被char替代
cout<<"最大值是:"<<fun1.max()<<endl;
cout<<"最大值是:"<<fun2.max()<<endl;
cout<<"最大值是:"<<fun3.max()<<endl;
return  0;
}

最终程序打印结果依次为:

最大值是:8
最大值是:9.7
最大值是:h

可以从程序举例中看出使用类模板Compare进行实例化,生成了3个类型分别为Compare<int>、Compare<float>、Compare<char>的模板类,这3个模板类经实例化后又生成了3个对象成员fun1、fun2、fun3。对象成员可以调用类模板中定义的成员函数max()。类模板表示了通用的类,模板类表示了经过实例化后带具体数据类型参数的类。

另外,在类模板中,类模板的成员函数是在类模板体内定义。而类模板中的成员函数也可以在类模板体外定义。那么就需要遵循以下规则:

(1)需要在成员函数定义之前进行模板声明;
        (2)在成员函数名前加上"类名<类型参数>::";

之前的程序举例中main函数之前的类模板声明就要改为如下格式:

template<typename T>   //声明一个模板,虚拟数据类型名为T
class Compare
{public :Compare(T a, T b){x = a;y = b;}T max( )  //类模板中的成员函数private :T x;T y;
};template<typename T> //在成员函数定义之前进行模板声明
T Compare<T>::max() //在成员函数名前加上"类名<类型参数>::"
{return (x > y) ? x : y;
}

↓↓↓更多技术内容和书籍资料获取敬请关注“明解嵌入式”↓↓↓

1分钟理清楚C++类模板和模板类区别相关推荐

  1. 模板资源下载类网站织梦模板(带手机端) 新手搭建

    最近在网上买了份<模板资源下载类网站织梦模板(带手机端) >源码.由于是初学php,对整个搭建工程做个笔记,希望能过对其他初学者有点帮助. 环境配置: 自己的电脑是win7系统,服务器买的 ...

  2. 各类商会协会单位类织梦模板(带手机端)

    模板名称: 各类商会协会单位类织梦模板(带手机端)+PC+移动端+利于SEO优化 模板介绍: 织梦最新内核开发的模板,该模板属于企业通用.商会.协会.事业单位类等设备类企业都可使用, 这款模板使用范围 ...

  3. C++知识点61——typename与class、模板编程与继承、模板类和友元、类模板与static成员

    一.typename与class的异同 1.啥时候既可以使用typename,又可以使用class? 当表示模板参数的时候,二者没有区别 2.啥时候只能使用typename,不能使用class? 当模 ...

  4. C++知识点59——类模板(4、类模板的模板参数是一个类模板)

    接上一篇文章https://blog.csdn.net/Master_Cui/article/details/111824152 七.类模板的模板参数是一个模板类 类模板的模板参数本身可以是一个类模板 ...

  5. 泛函编程—模板函数_类模板

    函数业务逻辑一样,只是函数参数类型不同 函数模板的本质:类型参数化--泛型编程 语法: template <typename T> template <class T1,class ...

  6. 定义一个类mymath_C++:模板类

    22.模板类 22.1 模板类 模板是泛型编程的基础,那什么是泛型编程呢?泛型编程是一种独立于任何特定数据类型编写代码的方式. C++标准模板库中的数据容器.迭代器和算法,都是泛型编程的例子,它们都使 ...

  7. binarytreenode”使用 类 模板 需要 模板 参数列表_c++1117 模板核心知识(一)—— 函数模板...

    目录 定义函数模板 使用函数模板 两阶段翻译 Two-Phase Translation 模板的编译和链接问题 多模板参数 引入额外模板参数作为返回值类型 让编译器自己找出返回值类型 将返回值声明为两 ...

  8. 8-1日复习 模板函数 模板类

    函数的重载: //函数重载 感觉还是太繁琐 引入函数模板的概念#include <iostream>using namespace std;int add(int x , int y) { ...

  9. 问模板函数、函数模板,模板类、类模板的区别的问题?

    问模板函数.函数模板,模板类.类模板的区别的问题? - 赵保龙 - 博客园 问模板函数.函数模板,模板类.类模板的区别的问题? 在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替 ...

最新文章

  1. dr.oracle素颜霜好用吗,treechada素颜霜好用吗_treechada素颜霜评测
  2. Codeforces 858A. k-rounding 数论
  3. Platform.Uno介绍
  4. vue 微信开发工具 Maximum call stack size exceeded
  5. TensorFlow | ReluGrad input is not finite. Tensor had NaN values
  6. C Tricks(六) —— 数组去重的实现
  7. 1.thinkphp6配置文件详解
  8. win10设置HTML桌面背景,win10系统怎么更换桌面壁纸?windows10更换桌面壁纸的方法...
  9. 超像素分割 SLIC算法 使用示例
  10. PHP多功能自动发卡平台源码带手机版 带多套商户模板
  11. 卸载驱动精灵后重启蓝屏
  12. 大话functional编程语言
  13. java nas_NAS对家庭来说有什么用处?
  14. 最高分姓名(name)
  15. PS轻松制作四种扁平化风格图标
  16. 【论文笔记】UBR4CTR:User Behavior Retrieval for Click-Through Rate Prediction (SIGIR 20)
  17. Redis容灾备份的方法
  18. iOS-关于M1芯片可以下载APP使用问题
  19. 熊掌号 php提交,网站接入熊掌号,网页配置并提交
  20. GD32E230开发笔记-GD32E230点亮LED

热门文章

  1. 机器学习苹果识别——python+opencv实现物体特征提取
  2. 当页面放大后, 背景会消失
  3. python读取usb数据显示_在python中从各种usb设备读取和存储各种数据
  4. 4G工业路由器DTU的扩展功能
  5. iOS TouchID/FaceID 开发
  6. 用Excel制作贪吃蛇
  7. docker安装gitea
  8. SpringBoot(三):最简版登录拦截案例
  9. 解决 “ImportError: attempted relative import with no known parent package“ 问题
  10. 高端知识星球正式开放了