模板类

模板类的定义使用template<typename T>template<class T>,将具有相同功能的代码合并,增加代码的简洁性和易读性。例如在计算凸包的例子中,传入点的类型可以是自定义的Point,也可以是pcl::point之类。

例如在头文件中的定义如下:

template<typename T>
class POLYGON
{
public:POLYGON();
public:void convhull(std::vector<T> &input, std::vector<T> &result);
};

模板函数

如模板类中的convhull函数就是模板函数,模板函数的输入为各种类型的点,将计算后的凸包存在result中。convhull的模板参数只有T,也可以为该函数增加其它的模板参数。例如,增加参数T1

template<typename T>
class POLYGON
{
public:POLYGON();template<typename T1> void test(T1 a);
public:void convhull(std::vector<T> &input, std::vector<T> &result);
};

以上为模板类和模板函数是如何定义的,接下来将介绍它们是如何初始化的。模板函数有隐式实例化和显示实例化,但模板类只有显式实例化

1、隐式实例化

​ 在模板函数的初始化在类的内部,即函数的实现在类的内部,例如实现pointFromVeh2grd,在调用隐式实例化的模板函数时,系统会自动适配模板参数T。

template<typename T>
class POLYGON
{
public:POLYGON();T pointFromVeh2grd(const T &ptVeh, const double &vehX, const double &vehY, const float &vehYaw){return ptGrd;}template<typename T1> void test(T1 a);
public:void convhull(std::vector<T> &input, std::vector<T> &result);
};

2、显示初始化

模板函数的初始化在类的外部,模板类实例化AXIS_CONVERT<int>,这说明AXIS_CONVERT类只接受int类型的输入,如果输入类型,编译器会报错。模板函数实例化template void AXIS_CONVERT::test<double>(double);同样test函数只接受double类型的输入。

//在源文件中进行显式初始化及实现//显式初始化
template class AXIS_CONVERT<int>;
template void AXIS_CONVERT::test<double>(double);//函数功能实现
template<typename T> template<typename T1>
void AXIS_CONVERT<T>::test(T a)
{std::cout<<a<<std::endl;}

C++之模板类模板函数相关推荐

  1. 【C++ 语言】面向对象 ( 模板编程 | 函数模板 | 类模板 )

    文章目录 函数模板 类模板 代码示例 函数模板 1. 模板编程 : 类似于 Java 中的泛型编程 ; ① 函数模板 : 对应着 Java 中的泛型方法 ; ② 类模板 : 对应 Java 中的泛型类 ...

  2. 模板类成员函数特例化写法

    现象: vs编译出现错误,即对函数ReleaseByOwner()进行了重定义: 解决: 先说一下我的开发背景: 原因: 在文件calibdt_array.h中定义了类Array,并声明了类内函数Re ...

  3. C++ 函数模板类模板详解

    在 C++ 中,模板分为函数模板和类模板两种.函数模板是用于生成函数的,类模板则是用于生成类的. 函数模板&模板函数     类模板&模板类  必须区分概念 函数模板是模板,模板函数时 ...

  4. C++模板 — 类模板

    请先阅览函数模板相关内容:C++模板 - 函数模板 类模板的定义 1.格式与写法: template < class类型参数1, class类型参数2, ...> class 类模板名 { ...

  5. <C++模板:(函数模板)+(类模板)--详细说明>

    文章目录 一泛型编程 二:模板 1.函数模板 2.类模板 一泛型编程 泛型编程是代码复用的一种手段,通过编写与类型无关的通用代码,完成函数重载,实现代码复用.模板是泛型编程的基础. 二:模板 模板分为 ...

  6. 模板函数与函数模板 类模板和模板的说明

    一,模板的概念. 引入模板的原因: 我们已经学过重载,对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同.正确的调用重载函数.例如,为求两个数的最大值,我们定义MAX()函数需要对不同 ...

  7. c++模板 --- 类模板、自定义类型当做模板参数

    生成一个类模板 类中用到了未知类型叫做类模板 用 template 修饰的类,这个类就是一个模板类 多用在数据结构中,忽略类型的问题 只要被 template 修饰,就是一个模板类,有没有用未知类型都 ...

  8. IDEA设置注释模板——类模板和方法模板(参数,返回值)

    一.类的注释模板 文件------设置-------------编辑器-------文件和代码模板 模板: /*** ----------------------------------------- ...

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

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

最新文章

  1. 吴恩达:AI未来将呈现四大发展趋势
  2. 大数据软件产品研发进展及挑战
  3. 2013年最佳Android平板
  4. 五年五件事,助我踏上寻梦路-追梦五年
  5. 计算机视觉--GIST特征及其MATLAB代码实现
  6. js map对象遍历_何时使用 Map 来代替变通的 JS 对象
  7. 重新学习c++--理解引用、智能指针、虚函数、模板、容器
  8. 使用dao时,如何同时使用动态表名和过滤字段?
  9. 第十一届蓝桥杯python试题_Python描述 第十一届蓝桥杯省赛第一场 试题 I: 字符串编码...
  10. 如何利用caffe自带的工具包绘制accuracy/loss曲线
  11. python爬大学生就业数据分析_Python 网络爬虫数据分析实战
  12. 简单的python爬虫爬豆瓣图书TOP250
  13. iphone健康数据统计_如何控制哪些应用程序可以访问iPhone的健康数据
  14. Vue之SetTimeout
  15. SMTP客户端python实现
  16. ksy是谁_MOON,sky他们是谁啊?
  17. 遵义微科技小程序商城直播系统,线下零售行业发展新趋势!
  18. 《我的职场十年》-读后感-Pete的启示
  19. 腾讯首发Linux内核源码《嵌入式开发进阶笔记》差距差的不止一点点哦
  20. 帝国cmssitemap.php,帝国CMS-sitemap地图插件下载

热门文章

  1. 磁盘与文件系统管理--鸟哥私房菜读书笔记
  2. 计算机sql查询同行并集,SQL查询交集、并集、差集
  3. Ubuntu16.04安装gazebo8并加载模型库
  4. 论文阅读-MLPD:Multi-Label Pedestrian Detector in Multispectral Domain(海康威视研究院实习项目)
  5. Nginx禁止使用IP访问
  6. 中望3D 2021 “基准面”之“动态基准面”模式
  7. SpringBoot整合Mybatis-Plus
  8. java mybatis的作用,【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验-博客...
  9. 有些MP4只有音频没有视频的解决办法
  10. TCP 与 CPU 架构发展史