关于C++函数模板定义时候的返回类型问题
如题,template<typename1,typename2>Tfun(inta,intb);这种形式的模板函数中,<>T这个T是返回类型,但是我不太明白他是什么返回类...
如题,template<typename 1,typename 2>T fun(int a,int b);这种形式的模板函数中,<>T 这个T是返回类型,但是我不太明白他是什么返回类型?我怎么知道他是什么数据类型?新手问的不合适大神们尽量理解、、
fun(T a , T b)这里写错了 展开
fun(T a , T b)这里写错了 展开
3个回答
展开全部
在模板里, 你可以抽象地把typename理解为一种数据类型(它应该是算成静态的数据类型)
你在template中定义的是typename 1和2, 没有T, 所以fun(T a , T b)就肯定是错的, 因为你定的是1和2, 就没有T的事.
这个和重载差不多, 只是说重载是对于不同参数进行不同的操作, 这个是对于不同的数据类型, 进行相同的操作, 但是这样, 模板也是可以减少许多不必要的代码书写.
正确写法是:
template<class _1, class _2>
_1 fun (_1 a, _2 b)
{
......
return a;
}
你在template中定义的是typename 1和2, 没有T, 所以fun(T a , T b)就肯定是错的, 因为你定的是1和2, 就没有T的事.
这个和重载差不多, 只是说重载是对于不同参数进行不同的操作, 这个是对于不同的数据类型, 进行相同的操作, 但是这样, 模板也是可以减少许多不必要的代码书写.
正确写法是:
template<class _1, class _2>
_1 fun (_1 a, _2 b)
{
......
return a;
}
展开全部
你在哪里看到的, 原样抄过来, 别按自己理解写一个.
template<typename 1,typename 2> 没有这种写法.
template<typename 1,typename 2> 没有这种写法.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这里的是错的
T是在你调用的时候来确定的,给你个例子:
#include<iostream>
using namespace std;
template<class T>
T fun(int a, int b)
{
b = a - b;
return b;
}
int main()
{
int result = fun<int>(5, 2);
cout << result << endl;
return 0;
}
T是在你调用的时候来确定的,给你个例子:
#include<iostream>
using namespace std;
template<class T>
T fun(int a, int b)
{
b = a - b;
return b;
}
int main()
{
int result = fun<int>(5, 2);
cout << result << endl;
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询