类模板

一些类主要用于存储和组织数据元素

类中数据组织的方式和数据元素的具体类型无关

如:数组类、链表类、Stack、Queue类、等

1、C++中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的功能。

C++中的类模板

1、以相同的方式处理不同的类型
2、在类声明前使用template进行标识;
3、用于说明类中使用的泛指类型T,

类模板的应用

1、只能显示指定具体类型,无法自动推导,
2、使用具体类型定义对象,

声明的泛型类型T可以出现在类模板的任意地方

编译器对类模板的处理方式和函数模板相同

1、从类模板通过具体类型产生不同的类;
2、在声明的地方对类模板代码本身进行编译;
3、在使用的地方对参数替换后的代码进行编译。

实例分析1

#include <iostream>
#include <string>
#include <cstdlib>using namespace std;template <typename T>
class Operator
{public:T add(T a, T b){return a + b;}T minus(T a, T b){return a - b;}T multiply(T a, T b){return a * b;}T divide(T a, T b){return a / b;}
};string operator -(string l, string r)
{return "Minus";
}int main()
{Operator<int> op1;cout << op1.add(1, 2) << endl;Operator<string> op2;cout << op2.add("hello", "world") << endl;cout << op2.minus("hello", "world") << endl;return 0;
}

类模板的工程应用

1、类模板必须在头文件中定义;
2、类模板不能分开实现在不不同的文件中;
3、类模板外部定义的成员函数需要加上模板<>声明

实例分析2
头文件

#ifndef OPERATOR_H
#define OPERATOR_Htemplate <typename T>
class Operator
{public:T add(T a, T b);T minus(T a, T b);T multiply(T a, T b);T divide(T a, T b);
};template <typename T>
T Operator<T>::add(T a, T b)
{return a + b;
}template <typename T>
T Operator<T>::minus(T a, T b)
{return a - b;
}template <typename T>
T Operator<T>::multiply(T a, T b)
{return a * b;
}template <typename T>
T Operator<T>::divide(T a, T b)
{return a / b;
}#endif

main.c文件

#include <iostream>
#include <string>
#include <cstdlib>
#include "Operator.h"
using namespace std;int main()
{Operator<int> op1;cout << op1.add(1, 2) << endl;cout << op1.multiply(4, 5) << endl;cout << op1.minus(4, 5) << endl;cout << op1.divide(20, 5) << endl;Operator<string> op2;cout << op2.add("hello", "world") << endl;return 0;
}

小结

1、泛型编程的思想可以应用于类;
2、类模板以相同的方式处理不同的数据类型;
3、类模板非常适用于编写数据结构的相关代码;
4、类模板在使用时只能显示指定类型。

C++之类模板的概念和意义相关推荐

  1. 【C++深度剖析教程37】类模板的概念和意义

    加qq1126137994 微信:liu1126137994 一起学习更多技术!!! 1.类模板 一些类主要用于存储和组织数据元素 类中数据的组织方式和数据元素的具体类型无关 如 数组类,链表类,st ...

  2. 【C++深度剖析教程35】函数模板的概念和意义

    加qq1126137994 微信:liu1126137994 一起学习更多技术!!! 1.问题引入: C++中有几种变量交换的方法? 定义宏代码块和定义函数 #include <iostream ...

  3. C++中多态的概念和意义

    文章目录 1 C++中多态的概念和意义 1.1 函数重写回顾 1.2 多态的概念 1.3 多态的意义 1.4 静态联编和动态联编 2 特殊的虚函数 2.1 构造函数能成为虚函数吗 2.2 析构函数能成 ...

  4. C++模板的概念<>(泛型编程)

    在阅读RXW源码的时候,老是看到<>这种成对的括号,不懂何意,查了一下原来是C++的模板,, 但是看了我还是不明觉厉,,有时间一定要系统学习下C++视频课程 20220201 nnd,找了 ...

  5. 【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 上一篇文章我们学习了微处理器与微控制器的区别.点击链接查看上一篇文章 ...

  6. 【C++深度剖析教程27】多态的概念与意义

    今天来学习一个新的概念,多态!!!多态在C++编程中具有重要的地位与意义,是面向对象的一个重要思想! 加qq1126137994一起学习更多技术~ 1.问题引入 父类与子类之间具有赋值兼容性; *子类 ...

  7. 【C++深度剖析教程22】继承的概念和意义

    今天我们来学习C++中的继承的概念和意义. 一.类之间的组合关系 问题:类之间是否存在直接的关联关系? 回答:类之间存在组合的关系,整体与部分的关系. 可以看一下生活中的例子: 下面我们以一个简单的程 ...

  8. 从语义开始 – 概念、意义、实践

    从语义开始 – 概念.意义.实践 http://bbs.blueidea.com/thread-2944769-1-1.html 转载于:https://www.cnblogs.com/javashi ...

  9. STM32时钟系统的概念及意义

    STM32时钟系统的基本概念 概念及意义 概念 时钟系统是由振荡器(信号源).定时唤醒器.分频器等组成的电路.常用的信号源有晶体振荡器和RC振荡器 意义 时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下 ...

最新文章

  1. 书评:测试驱动开发的艺术
  2. 关于python的一些好的书籍推荐-推荐几本关于的Python好书
  3. navicat创建计算列_Tableau Part 9 计算字段amp;粒度聚合比率amp;表计算
  4. 关于spring MVC中加载多个validator的方法。
  5. leetcode1423. 可获得的最大点数
  6. 周记之琢磨下计算机网络(2018/10/22-2018/10/28)
  7. 水滴石穿C语言之正确使用const
  8. 字符串匹配算法之KMP
  9. 杭电多校HDU 6601 Keen On Everything But Triangle(主席树)题解
  10. C compiler test failed.
  11. arduino通过串口监视器读取一行字符
  12. python实现图像二分类特异度(numpy)
  13. Apache2 Windows安装与HTTP Server Digest 认证
  14. eyoumailserver邮箱服务器与foxmail 邮箱客户端的使用和安装
  15. 中国省市区县行政编码sql脚本
  16. 转:如何选择 Excel 中的数据列,然后将数据粘贴到文本文件中?
  17. 181202 逆向-2018鹏城杯
  18. 微信公众号java开发教程
  19. 医疗实施-MDM主数据管理基本介绍
  20. 机械工业出版社计算机组成原理答案,计算机组成原理

热门文章

  1. homestead是什么玩意? 怎么弄?
  2. 【NOI2022省选挑战赛 Contest11 A】魔法球(二分)
  3. 【xlsx+vue】前端生成可下载的xlsx表格
  4. angular HostListener_angular 事件处理_angular 教程_angular视频教程 - angular 指令教程
  5. 因子分析——附数据下载
  6. java大数运算详解【其三】大数乘法之平方算法之按位二次展开式算法
  7. 并行与分布式复习笔记
  8. (C语言网)那些让你起飞的计算机基础知识:学什么,怎么学?
  9. 解决laravel框架在腾讯云 Serverless Framework 中439错误 Process exited before completing request问题
  10. WebFlux响应式编程