注册 登录
编程论坛 新人交流区

再来看看

vczxz 发布于 2007-10-29 22:55, 216 次点击
template <class T>
T max(T x,T y)
#include <iostream.h>
{
return(x>y)?(x):(y);
}
double max(double ,double);//重载了一个double类的函数为什么这一个题还是不能运行
void main()
{
int x=3,y=4;
long l=5;
double a=1.1,b=3.4;
cout<<max(x,y)<<endl;//调用int max(int ,int)
cout<<max(a,b)<<endl;//调用double max(double ,double)
cout<<max(l,a)<<endl;//调用double max(double ,double)
cout<<max(a,l)<<endl;//调用double max(double ,double)
cout<<max(x,l)<<endl;//调用double max(double ,double)
}
6 回复
#2
jqcn2007-10-30 02:53
  还是不懂。还是不懂。
#3
满江风2007-10-30 09:33
#4
jarylook2007-10-30 10:08
新学的,不太懂哦
#5
菜鳥弎魛2007-10-30 11:01

整么看这个程序这么别扭呢?

#6
vczxz2007-10-30 12:30
这个题是C++自考教材的例题
原题是这个样子的:
template <class T>
T max(T x,T y)
{
return(x>y)?(x):(y);
}
double max(double ,double);//重载模板函数
//也可使用原型int max(int,int)
//只能从其中选择一个
#include "iostream.h"
void main()
{
int x=3,y=4;
long l=5;
double a=1.1,b=3.4;
cout<<max(x,y)<<endl;//调用模板int max(int ,int)
cout<<max(a,b)<<endl;//调用模板double max(double ,double)
cout<<max(l,a)<<endl;//调用重载double max(double ,double)
cout<<max(a,l)<<endl;//调用重载double max(double ,double)
cout<<max(x,l)<<endl;//调用重载double max(double ,double)
}
程序最后输出为:
4
3.4
5
5
5

#7
vczxz2007-10-30 12:36
字一个都不少
但我在机子上运行时就是在重载那里发生了错误
书上说是可以重载的
但是这段程序在VC++6.0上运行时报错说什么不是同一个类型的
书上说可以进行隐式转换
1