显示具体化、显示实例化、隐式实例化
来源:互联网 发布:msp430单片机价格 编辑:程序博客网 时间:2024/05/20 01:37
讨论这三者的区别我们要先认识函数模板,函数模板是C++新增的功能,他会创建一个通用的函数以支持多种不同类型的形参,避免函数体的重复设计,在我们需要重复用到某一段代码但是需要处理不同类型的参数时,使用函数模板是很方便的一个手段他最大的特点是把数据类型也作为了参数。每一个函数用一个函数模板,想让几个函数使用共同的模板参数,应当使用模板类
显示实例化:
template void Swap<int> (int ,int);
显示具体化:( 定义job为一个结构体 )
template <> void Swap<job> (job &,job &); 或 template<> void Swap (job &,job &);
从定义形式上我们可以看出区别在于前者以 template 打头,后者以template<> 打头
从含义上,显示具体化告诉编译器不要使用Swap()的函数模板来生成函数定义,而使用专门的job类型显式地定义函数定义 是为了提供一个具体化的函数定义,其中包括所需的代码,当编译器找到与函数调用匹配的具体化定义时,将使用该定义,而不再寻找模板,而显示实例化则是生成了一个指出特定参数类型的实例函数
综上所述:
隐式实例化:使用模板之前,编译器不生成模板的声明和定义示例,后面有程序用了,编译器才会根据模板生成一个实例函数,
显式实例化:是无论是否有程序用,编译器都会生成一个实例函数
显示具体化:因为对于某些特殊类型,可能不适合模板实现,需要重新定义实现,此时就是使用显示具体化的场景
注:函数模板可能在编译阶段会产生多个实例(每个编译单元都会产生),但是在链接并产生最终的执行程序的阶段,只会产生一个实例。
阅读全文
0 0
- 显示具体化、显示实例化、隐式实例化
- 关于隐式实例化,显示实例化,显示具体化的理解.
- 显示实例化和显示具体化(模版特例化)
- 模板函数,模板函数重载,显示具体化模板,实例化
- 实例化和具体化
- C++学习中的函数模版(显式具体化、隐式具体化、显式实例化)
- 实例化和具体化详解
- C++模版 显式实例化、显式具体化、隐式实例化
- 函数模板之隐式实例化、显式实例化、显式具体化
- template显式具体化、显式实例化、隐式实例化
- C++函数模板的隐式实例化、显式实例化与显式具体化
- C++模板显式实例化,隐式实例化,特化(具体化,偏特化)辨析
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- 模板的实例化和具体化
- C++函数模板 模板实例化、具体化
- C++函数模板 模板实例化、具体化
- 0 1子串问题
- SQL---NULL值处理(2)
- hash函数
- 开通感言
- NYoj_07_街区最短路径问题 解题思路和代码
- 显示具体化、显示实例化、隐式实例化
- 为什么要用spring,springMVC?
- can't resolve getServletContext();的可能解决办法
- java高并发程序设计学习笔记七并发设计模式
- BZOJ4719(NOIP2016)[天天爱跑步]--LCA+DFS
- 关于 shell 脚本中 重定向文件名带问号的解决办法
- 将npy数据集恢复为图片(17)---《深度学习》
- 关于Python制作简单的图形界面GUI
- 联合体