函数模板的异常处理问题

wufeng无峰 2004-12-06 04:26:26
用非函数模板重载函数模板:

#include<iostream.h>
template<class T>
T max(T x,T y)
{return(x>y)?x:y;}
int max(int ,int );
void main(){
cout<<max(5,6)<<endl;
cout<<max('c','d')<<endl;
cout<<max(3,'c')<<endl;
cout<<max('c',74)<<endl;
}

错在哪里?怎么改?
有什么书介绍一下,谢了!!!
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
JerrySabrina 2004-12-06
  • 打赏
  • 举报
回复
这个问题能不能别沉啊,我还是有点不懂……但是现在有事。先顶上了~!
wuqizhi 2004-12-06
  • 打赏
  • 举报
回复
楼主可以到Turbo C++里面去试一下,是能通过的;
在VC6.0里面不支持"用非摸板函数重载函数摸板int max(int ,int )";
这是编辑器的缘故.
如果你要在VC6.0里面运行的话,须把int max(int ,int )的函数体写出来!
;
goodluckyxl 2004-12-06
  • 打赏
  • 举报
回复
重载和多态
这两个是没有代码重复的
象多态将接口参数类型推迟检测
不存在代码膨胀的概念
只有模板或许还可能发生这中情况
ww0713 2004-12-06
  • 打赏
  • 举报
回复
你是在 vc++里边运行的把,到tc++ 里试试 ,其实语法没错的,cout<<max(3,'c')<<endl;
cout<<max('c',74)<<endl;这两句会执行强制类型转换,调用max(int,int)
pigja 2004-12-06
  • 打赏
  • 举报
回复
#include<iostream.h>

template<class T>
T max(T x,T y)
{
return(x>y)?x:y;
}

void main(){
cout<<max(5,6)<<endl;
cout<<max('c','d')<<endl;
cout<<max(3,(int)'c')<<endl;
cout<<max((int)'c',74)<<endl;
}
这样就可以了
JerrySabrina 2004-12-06
  • 打赏
  • 举报
回复
老大们,能通俗点讲讲模板,重载和多态吗?我觉得都是在“复用”代码。也不知道理解对不对?
pigja 2004-12-06
  • 打赏
  • 举报
回复
#include<iostream.h>
template<class T>
T max(T x,T y);
int max(int x,int y)
{
return(x>y)?x:y;
}
void main(){
cout<<max(5,6)<<endl;
cout<<max((int)'c',(int)'d')<<endl;
cout<<max(3,(int)'c')<<endl;
cout<<max((int)'c',74)<<endl;
}
pacman2000 2004-12-06
  • 打赏
  • 举报
回复
int max(int ,int );
改成
template int max(int ,int ); 模板特化。
但是下面的cout<<max(3,'c')<<endl;
cout<<max('c',74)<<endl;
是不行的,因为没有max(int,char)和max(char,int)
carylin 2004-12-06
  • 打赏
  • 举报
回复
cout<<max(3,'c')<<endl;
cout<<max('c',74)<<endl;

没有函数匹配。因为模板函数
T max(T x,T y)
{return(x>y)?x:y;}
中的x, y的类型是相同的。
goodluckyxl 2004-12-06
  • 打赏
  • 举报
回复
cout<<max(5,6)<<endl;
这个max应该是调用 max( int, int);
进行直接匹配,优先调用
但是找不到函数体
你需要有函数定义

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧