首页 > 编程语言 >C++ 模板参数的两种类型转换

C++ 模板参数的两种类型转换

时间:2024-11-08 14:09:49浏览次数:1  
标签:类型转换 转换 函数 C++ 实参 模板 参见

与非模板函数一样,我们在一次调用中传递给函数模板的实参被用来初始化函数的形参。如果一个函数形参的类型使用了模板类型参数,那么它采用特殊的初始化规则。只有很有限的几种类型转换会自动地应用于这些实参。编译器通常不是对实参进行类型转换,而是生成一个新的模板实例。

与往常一样,顶层 const(参见 2.4.3节,第57页)无论是在形参中还是在实参中,都会被忽略。在其他类型转换中,能在调用中应用于函数模板的包括如下两项。

  • const 转换:可以将一个非const对象的引用(或指针)传递给一个const的引用(或指针)形参(参见4.11.2节,第144页)。

  • 数组或函数指针转换:如果函数形参不是引用类型,则可以对数组或函数类型的实参应用正常的指针转换。一个数组实参可以转换为一个指向其首元素的指针。类似的,一个函数实参可以转换为一个该函数类型的指针(参见4.11.2节,第143 页)。
    其他类型转换,如算术转换(参见 4.11.1节,第142页)、派生类向基类的转换(参见 15.2.2节,第 530 页)以及用户定义的转换(参见7.5.4节,第263 页和14.9节,第 514页),都不能应用于函数模板。

其他类型转换,如算术转换(参见 4.11.1节,第142 页)、派生类向基类的转换(参见 15.2.2节,第 530 页)以及用户定义的转换(参见 7.5.4节,第 263 页和 14.9节,第514页),都不能应用于函数模板。

Note

  1. 将实参传递给带模板类型的函数形参时,能够自动应用的类型转换只有const转换数组或函数指针的转换。
  2. 如果函数参数类型不是模板参数,则对实参进行正常的类型转换:




源自:《C++ Primer》 P601

标签:类型转换,转换,函数,C++,实参,模板,参见
From: https://www.cnblogs.com/huvjie/p/18534951

相关文章

  • C++ 模板显式实例化
    //template.hpptemplate<typenameT>classDylan{public:Dylan(Tt);Tm_data;};//template.cpp#include"template.hpp"template<typenameT>Dylan<T>::Dylan(Tt){m_data=t;}templateclassDylan<int&g......
  • C++关于DLL导出模板类和模板函数
    这两天写了个Dll,要导出普通类中的模板函数,稍微查了一下,没查到具体资料。自己根据C++模板的编译原理,推断出应该要源码放在头文件中直接导出,查了下接触的OpenSource项目,确实如此。这里记录一下,方便下次查阅。1、宏定义说明:#ifdefDLL_PROJECT#defineTEMPLATE_IM_EXPORT__decl......
  • c++多态学习:多态含义与使用
    目录 多态的概念多态的定义多态的实现注意事项 多态的概念多态是面向对象编程中的一个重要概念,它指的是同一个行为具有多个不同表现形式或形态的能力。在C++中,多态主要通过虚函数来实现,允许将子类类型的指针赋值给父类类型的指针,并在运行时根据实际对象类型调用相......
  • SVN提交日志模板设置
    前言:每次提交时都要手动输入很多固定日志信息,或者在最近中选择信息记录会比较麻烦,通过这个设置可以在每次提交时,自动填充日志信息设置步骤1:先进入你想要提交svn自动设置模板时的目录(例如策划同学进入到Table表格提交记录,程序同学进入到代码提交目录,美术同学进入资源提交目录)嫌麻......
  • 最新毕设-SpringBoot-求职推荐系统-55000(免费领项目)可做计算机毕业设计JAVA、PHP、爬
    摘 要当前社会竞争激烈,求职市场信息众多,但信息不对称、筛选困难的问题依然存在。因此,设计开发一款求职推荐系统是顺应时代发展的必然选择。该求职推荐系统利用Java编程语言,使用springboot技术框架,采取MySQL数据库实现系统的各项功能,具有便捷高效、安全友好的特点,促进求职招聘......
  • C++:模拟实现STL的list
    目录一.list类1.list的创建节点2.list迭代器的运算符操作3.list的构造函数及析构4.list的迭代器5.list的插入及删除二.整体代码1.list.h2.list.cpp在上一节已经了解list在库中的用法,在这里实现list的底层逻辑一.list类1.list的创建节点template<classT>struc......
  • C++入门基础(一)
    目录C++关键字命名空间命名冲突例子域的概念理解命名空间定义例子1例子2例子3例子4例子5例子6例子7C++输出与输入输出输入感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接......
  • C++解倒三角问题
    题目描述输入一个整数打印数字图形。输入一个整数(0<n<10)输出一个数字图形样例输入 3样例输出 关于本题代码如下:#include<iostream>usingnamespacestd;intmain(){ intn,k,t=1; cin>>n;k=n; for(inti=1;i<=n;i++......
  • c++解修剪花圃问题
    C++解“修剪花圃”题目描述你知道吗?在外国,如果你不修剪你的花圃,是要被贴罚单的。Xman忙于战斗,被贴了好多罚单。这一次好不容易休息了,他决定修剪一下。修剪成什么样子呢?当然是X形。Xman的花圃是一个n*n的正方形,其中n为大于等于3的正奇数。在每个位置上都有几个植物,对应的......
  • 教会你各类竞赛数学建模论文写作(通用模板)
    一.写论文遇到问题             谈起论文写作,肯定有不少伙伴没思路,没有东西去写下去这么篇幅长的论文。好,解决问题的前提是发现问题,那么我们在写作的时候,问题有哪些呢??1.不知道一开始从哪里入手2.在开始写的时候,写到后面,不知道写什么了3.找不到一个固定的......