模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的。模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是如果这个模板有多个类型,那么只限定其中的一部分。先看类模板:templateclass Test{publi...
分类:
其他好文 时间:
2015-07-07 16:21:53
阅读次数:
147
函数模板特template int compare(T v1,T v2){if(v1v2) return 1;else return 0;}template int compare(char * s1,char * s2){ return strcmp(s1,s2);}类模板的特化templa...
分类:
编程语言 时间:
2015-07-05 21:04:47
阅读次数:
153
函数模板和普通函数区别结论:
1、函数模板不允许自动类型转化;
2、普通函数能够进行自动类型转换;
函数模版和普通函数在一起的调用规则:
1、函数模版可以像普通函数一样被重载;
2、C++编译器优先考虑普通函数;
3、如果函数模版可以产生一个更好的匹配,那么选择模版;
4、可以通过空模版实参列表的语法限定编译器只通过模版匹配;...
分类:
其他好文 时间:
2015-07-03 10:43:25
阅读次数:
130
思考:为什么函数模板可以和函数重载放在一块。C++编译器是如何提供函数模板机制的?
总结:函数模版机制结论:
编译器并不是把函数模版处理成能够处理任意类的函数;
编译器从函数模版通过具体类型产生不同的函数;
编译器会对函数模版进行两次编译:在声明的地方对模版代码本身进行编译,在调用的地方对参数替换后的代码进行编译。...
分类:
编程语言 时间:
2015-07-03 10:38:42
阅读次数:
181
分析下面程序出现的编译错误,给出解决的方案。
#include
using namespace std;
//定义函数模板
template
T max(T a, T b)
{
return (a>b)?a:b;
}
int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
cout<<"把T实例化为int:"<...
分类:
其他好文 时间:
2015-06-27 18:31:55
阅读次数:
287
在boost的智能指针中析构时都用到了checked_delete 和checked_array_delete,为什么不简单地delete呢?
在头文件”boost/checked_delete.hpp”定义了两个函数模板,checked_delete 和 checked_array_delete, 以及两个类模板,checked_deleter 和 checked_array_deleter...
分类:
其他好文 时间:
2015-06-27 16:41:07
阅读次数:
108
首先我们在学习类模板和函数模板时候会遇到这样一个问题:
类模板 与模板类
函数模板与模板函数
这些不仅仅是简单的文字游戏,而是需要我们深深的区分一下才可以理解其中的奥秘!
再回想一下我们在学习C语言的时候也遇到了这样几个类似的名词
函数指针与指针函数
数组指针与指针数组
函数指针即是重点在后边的名词指针,前边的函数只是修饰名词指针的一个定语而已,欧,这是一个语文的奥秘哟...
分类:
其他好文 时间:
2015-06-25 17:39:07
阅读次数:
104
函数模板
一.初探函数模板
函数模板的声明形式:
template//template
可以用class来替代typename,聪语义上讲,二者等价。因此,即使在这里使用class,你也可以用任何类型(前提是该类型提供模板使用的操作)来实例化模板参数。另外还应该注意,这种用法和类型声明不同,也就是说,在声明(引入)类型参数的时候,不能用关键字struct代替typenam...
分类:
编程语言 时间:
2015-06-25 09:02:35
阅读次数:
143
问题描述:
【项目3-max带来的冲突】
分析下面程序出现的编译错误,给出解决的方案。
#include
using namespace std;
//定义函数模板
templateclass T>
T max(T a, T b)
{
return (a>b)?a:b;
}
int main()
{
int x=2,y=6;
double...
分类:
其他好文 时间:
2015-06-23 21:46:54
阅读次数:
168
一、基本说明C++标准中提到,一个编译单元是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件,后者拥有PE[PortableExecutable,即Windows可执行文件]文件格式,并且本身包...
分类:
编程语言 时间:
2015-06-22 19:09:49
阅读次数:
321