template <typename T>

void f(paramTyep param);

f(expr);

template <typename T>

void f(T& param);//T& 参数类型

int x = 0;

const int cx = x;

const int& rx = x;  //rx是别名

f(x); //调用 f(int&)

f(cx);//调用f(const int&)

f(rx);//调用f(const int&)

void f(const T& param);//const T& 参数类型

f(x); //调用 f(const int&)

f(cx);//调用f(const int&)

f(rx);//调用f(const int&)

template <typename T>

void f(T* param) // param 是一个指针

f(&x) //T是int ,param 类型是 int*

f(px);T是const int参数类型是 const int*

参数类型是万能引用

template <typename T>

void f(T&& param) // param 是万能引用,既可以传递左值,又可以传递右值

int x = 1;

f(x);x 是一个值,T是Int&,类型是int&

f(1);1是右值,T是int,参数类型是int&&

参数类型既不是指针也不是引用

template <typename T>

void f(T&& param);// 按值传递

int x = 1;

const int cx =x;

const int& rx = x;

f(x);// T 和参数类型都是Int

f(cx);// T 和参数类型都是Int

f(rx);// T 和参数类型都是Int

const char* const ptr = "hehws";

f(ptr);//T 是 const char*

参数是数组

const char name[] = "ddd";

const char * ptrName = name;

template <typename T>

void f(T  param);// 按值传递

f(name) // T是const char*

template <typename T>

void f(T&  param);//

f(name) // T是const char[4]编译器推导数组长度

参数是函数

template <typename T>

void f1(T  param);// 按值传递

template <typename T>

void f2(T & param);// 按值传递

f1(someFunc);//参数是函数的指针, 类型是 void(*)()

f2(someFunc);//参数是函数的y引用, 类型是 void(&)()

template 推导相关推荐

  1. Effective C++ --7 模板与泛型编程

    上一篇Effective C++ -- 6 继承与面向对象设计 41.了解隐式接口和编译器多态 (1)class和template都支持接口和多态.Class支持显示接口,多态是指virtual引起的 ...

  2. 《Effective C++》:条款46-条款47

    条款46请输入转换的时候,需要定义非模板成员函数 条款47请使用traits class表现类型信息 条款46:须要类型转换时请为模板定义非成员函数 条款 24提到过为什么non-member函数才有 ...

  3. C++ typename详解

    博客:https://goodfanqie.github.io(文章优先展示地方,推荐在此阅读.) typename的疑问 最近在学习<STL 源码剖析>这本书的时候,在里面看到其中关于t ...

  4. 经济泡沫和泡沫经济的区别_投资绿色技术:绿色黄金还是绿色泡沫?

    经济泡沫和泡沫经济的区别 Recently, investments in projects that provide an opportunity not only to earn but also ...

  5. 《Effective C++》 笔记

    文章目录 0.导读 命名习惯 1.让自己习惯C++ 条款01 条款02:尽量以const.enum.inline替换 #define 条款03:尽可能使用const 1.const与函数声明式关联 2 ...

  6. ECM技术学习:基于模板的帧内模式推导(Template based intra mode derivation )

    和基于梯度的帧内模式推导类似,ECM中还使用了基于模板的帧内模式推导. 基本原理:对于当前待预测CU,在模板区域计算预测像素和重建像素的SATD,从MPM列表中选出两个SATD最小的预测模式mode1 ...

  7. C++11 类型推导decltype

    我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行.RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通 ...

  8. java 区间树_线段树(区间树)之区间染色和4n推导过程

    前言 线段树(区间树)是什么呢?有了二叉树.二分搜索树,线段树又是干什么的呢?最经典的线段树问题:区间染色:正如它的名字而言,主要解决区间的问题 一.线段树说明 1.什么是线段树? 线段树首先是二叉树 ...

  9. C++Template 模版的本质

    我想知道上帝的構思,其他的都祇是細節.                                                                                 ...

最新文章

  1. POJ2135 来回最短路(简单费用流)
  2. 高通8x12平台开机画面制作工具
  3. 【转】notepad++设置字体和字体大小
  4. Zabbix housekeeper processes more than 75% busy
  5. 使用Spring MVC开发Restful Web服务
  6. MOVSX和MOVZX
  7. Spring源码 (事务篇) - 整体流程
  8. mysql 格式化时间_每天一个常用MySQL函数-from_unixtime等
  9. bShare一个强大的网页分享插件
  10. springboot获取Spring容器中的bean(ApplicationContextAware接口的应用)避免过多的或不用if..else,switch
  11. C++使用命名管道使用进程间通信
  12. c++ 以当前时间为文件名打印日志
  13. 第三章:logback 的配置
  14. 打印收款单据(easypoi)Vue+springBoot+Mybatisplus
  15. JavaWeb笔记——JSPThymeleaf
  16. 三种方法破解系统管理员密码
  17. Showwindow 及参数
  18. 磁吸数据线的特点与优势
  19. 力扣88 - 合并两个有序数组【归并排序思维】
  20. 鸟哥的Linux私房菜 读书笔记

热门文章

  1. ifconfig comand not found
  2. 深度学习中的经典基础网络结构(backbone)总结
  3. 华为linux系统信息,Linux系统信息相关、其他命令(五)
  4. 大数据+NCAA=?球迷情绪预测体育赛事结果
  5. Greenplum常用导数据方法及性能测试
  6. 2.2.2新版Banner轮播图实现
  7. 网速被限制?不存在的-破解网络限速
  8. javaweb酒店预订系统
  9. excel如何画删除线
  10. 一年融资三轮,一文读懂亿格云这家公司