c++模板函数调用 10

template<typenamey>yin_put(){ya;cout<<"pleaseenter:";cin>>a;returna;}我要用函数模板把任意类型的数据赋... template<typename y>
y in_put(){
y a;
cout<<"please enter : ";
cin>>a;
return a;

}
我要用函数模板把任意类型的数据赋值给变量,但是上述的只能用于int型:in_put<typenname>();
要怎么改?
展开
 我来答
仙戈雅3n
推荐于2017-11-29 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:904万
展开全部
#include <iostream>
#include <string>
using namespace std;

template<typename y>
y in_put(){
y a;
cout<<"please enter : ";
cin>>a;
return a;

}
int main(void){
// 调用形式有两种:
第1种形式:当函数里没有采用0个参数列表时
         调用形式: 函数名<基础类型名>(); // 必须显式给出数据类型,否则编译系统无法推断虚拟类型的具体类型是什么。
         
第2种形式:当函数里采用了1+个参数列表时
         调用形式: 函数名(参数列表); // 即不需要显式给出具体的数据类型
int i=in_put<int>(); // y被int替代
string s=in_put<string>(); // y被string替代
cout<<"s="<<s<<endl<<"i="<<i<<endl;
}
追问
我是想直接用 in_put作为函数的参数使用,比如
template
y add(int a,int b)
{
return a+b;
}
然后在主函数
add(in_put,in_put);//但是只能用于int型的数据
这样怎么弄?
追答
#include <iostream>
#include <string>
using namespace std;

template<typename y>
y in_put(){
y a;
cout<<"please enter : ";
cin>>a;
return a;

}
template<typename y>
y add(y p1,y p2){

return p1+p2;
}

int main(void){

cout<<add(in_put<int>(),in_put<int>())<<endl;
cout<<add(in_put<string>(),in_put<string>())<<endl;
}
改迎戎qo
2014-09-13 · 超过73用户采纳过TA的回答
知道答主
回答量:174
采纳率:85%
帮助的人:64.7万
展开全部
构造函数不用显式调用的。

A<int> temp;

如果上面这样产生对象,计算机就会调用你的那个构造函数了。
追问
看不懂,能直接改么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式