2 wangjingwei029 wangjingwei029 于 2014.02.07 11:41 提问

关于c++中函数模板的重载问题

直接上代码(简单),
enter code here
template< class T >
void test(T x){
cout<<x<<endl;
}

void test(int);

int main(){
int x = 1;
test(x);
}

上述程序使用非模板函数对函数模板test进行重载:按照书中的说法-这个非模板函数可以只声明原型,然后借用模板中定义的函数体。
但是链接的时候找不到那个非模板函数的定义(使用的VS208)。求解?

1个回答

Firas
Firas   2014.07.08 23:35

要用模板中定义的函数体,还声明非模板函数干什么?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
重载函数模板
//求两个int值得最大值 inline int const& max(int const&  a,int const& b) {     return a } //求两个任意类型值中的最大者 template inline T const& max(T const& a,T const& b) {   return a } //求3个任意类型值中的最大者 temp
c++函数重载和函数模板
上学期学了C++,可是忘得差不多了 一、函数重载 1、函数重载挺简单的,按我的理解就是相同功能的函数可以用相同的名字,通俗点就是中文里的我能做什么,比如做饭,做菜,虽然做的东西不一样,但是他们都是有“做”这个动词~ 2、函数重载能干嘛~我觉得就是同一个函数能够处理不同的数据,不然当同种操作要处理int、float型数据时就要定义多个函数名,多个函数名会不利于程序员阅读和记忆,所以
【c++模板笔记一】模板的介绍及其重载
本文你将学到: 1.为什么要引入模板。 2.怎么去定义和使用模板 3.分析模板的实现方法和隐式推断规则。 4.模板重载的规则。
1017. 数据的最大值问题(重载+函数模板)
两个类如下设计:类time有三个数据成员,hh,mm,ss,分别代表时,分和秒,并有若干构造函数和一个重载>(( 主函数有如下数据成员:int intArray [ 100 ]; double douArray [ 100 ];time timeArray [ 100 ]; date dateArray [ 100 ]; 其中,hh = 3600 * ss, mm = 60 * ss, ye
函数重载和函数模板的区别
函数重载 通常在C语言编程中,如果我们比较三个整数的大小,我们可以进行编写一个max()函数,而如果我们要继续比较三个浮点数的大小,就需要重新编写一个函数,函数体基本是完全相同的,就是返回值和参数类型是不同的,但是函数名称不能是一个了,所以要写第二个函数max1()。 在C++中就可以避免这个问题,允许用同一个函数名定义多个函数,但是一定要注意一点,重载函数的参数个数、参数类型、参数顺序、这三
c++重载与模板
一、 模板是泛型编程的重要支持,函数和类模板在STL中运用的非常广泛,首先谈谈c中的函数重载和c++中的函数模板的区别: 1、首先,函数重载是函数名相同,但参数个数和类别不同,如果增加参数个数和参数型别就要重新编写相应的重载函数,而相对于函数模板就比较灵活,我们只要编写一个函数模板,编译器在编译是就会根据参数类型特例化出相应的版本,而且模板支持可变参数(template,..代表0个或多个参数)
C++之模板(模板函数+模板类+STL+重载[未完待续])
模板 模板就是把类型当做参数,假设有一下代码 代码1:int max(int a, int b){ return (a > b) ? a; b; } char max(char a, char b){ return (a > b) ? a; b; }上述代码的两个函数逻辑结构相同,但是数据结构不一样,要实现只编写一个函数就能实现所有的这些函数,就要用到模板。 模板的关键字:template t
C++ 模板函数和非模板函数的重载
关于函数的重载机制,是一个比较复杂的问题,其中涉及到了优先级定义和最佳匹配等问题,如果要阐述清楚,恐怕不是一两篇文章就能说的明白。但是如果掌握了一些常用的“规律”,对于了解程序对重载函数是如何进行选择也有很大的好处,本文尝试将自己理解的知识,结合下面简单的例子简略的说说函数重载机制,文章的摘录部分列出了一些关于程序如何选择重载函数的规则。: ) 例子如下: #include
#函数模板# 求2个数,3个数,一组数的最大值
/*编写求2个数,3个数,一组数中最大数的函数模板 (20151206)*/ #include #include using namespace std; template //声明函数模板 T max(T x, T y){ return x > y ? x : y; } template //函数模板重载 T max(T x, T y, T z) {
函数的重载与函数模板
函数重载:有时候想要实现几个功能相近,但只是处理的参数类型不同的函数,在C语言里我们要把这些函数起上不同的名字,而在C++里我们可以把这些函数都给上一个函数名只需要把不同的参数给入函数就可以了,这样大大的减少了函数名的数量,增强了代码的可读性。C++中这叫做函数的重载,是在同一作用域内声明几个功能类似的同名函数,但是这些函数必须是参数类型和数量必须不同。调用时,编译器会自动匹配参数最相符的函数,这样