关于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)这里写错了
展开
 我来答
文正153
2015-03-21 · TA获得超过2.1万个赞
知道大有可为答主
回答量:2221
采纳率:63%
帮助的人:636万
展开全部
在模板里, 你可以抽象地把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;

}
iicup
2015-03-21 · TA获得超过890个赞
知道小有建树答主
回答量:597
采纳率:85%
帮助的人:177万
展开全部
你在哪里看到的, 原样抄过来, 别按自己理解写一个.
template<typename 1,typename 2> 没有这种写法.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
轩落_翼
2015-03-21 · TA获得超过169个赞
知道小有建树答主
回答量:87
采纳率:75%
帮助的人:65.4万
展开全部
你这里的是错的
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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式