注册 登录
编程论坛 C++教室

max 函数重载 程序交流只为进步 欢迎指正代码缺点 新人 希望 提高

haoyasen 发布于 2013-05-27 08:23, 1394 次点击
/*
【基本题】实现重载max的函数,让它接受以下参数
  (a) 两个整数
  (b) 两个浮点数
  (c) 两个字符串
  (d) 一个整数数组,以及一个表示数组大小的整数值
  最后撰写main()测试这些函数。
*/
#include<iostream>
#include<string>
using namespace std;
class  Max{
public :
    int max(int & a,int &b )const
    {
    if(a<b)
        return b;
    return a;
    }
    double max(double & a,double  &b )const
    {
    if(a<b)
        return b;
    return a;
    }
    char  *  max(char *& a,char *&b )const
    {
        if(strcmp (a,b)<0)
            return b;
        else
        if(strcmp (a,b)==0)
            return a;
        else
            return a;
    }
    int max(int   *a,int  n)const
    {
        int max=*(a);
        for(int i=0;i<n-1;i++)
            if(max<*(a+i+1))
                max=*(a+i+1);
        return max;
    }
};
void main()
{
    int a=8,b=9;
    double c=2,d=3;
    char *e="sad",*f="sdf";
    int array[3]={1,2,3},n=3;
    Max m;
    cout<<m.max(a,b)<<endl;
    cout<<m.max(c,d)<<endl;
    cout<<m.max(e,f)<<endl;
    cout<<m.max(array,3)<<endl;
}
20 回复
#2
haoyasen2013-05-27 08:23
希望自己每天都要进步  加油
#3
haoyasen2013-05-27 08:25
大家可以指出  我 的语言风格缺点  什么 的 随便把
#4
haoyasen2013-05-27 08:26
或者是 更好的方法 关于本题的
#5
rjsp2013-05-27 08:56
你的设计,错到没边了
#6
haoyasen2013-05-27 09:09
回复 5楼 rjsp
说吧  我承认  展出来 就是 要进步的
#7
haoyasen2013-05-27 09:13
回复 5楼 rjsp
是 写出构造函数吗
#8
lzj125302013-05-27 09:32
好的设计风格,应该在类里面进行声明,外部进行定义。你把所有内容都放到类里面感觉很乱
#9
haoyasen2013-05-27 09:46
回复 8楼 lzj12530
哦 还有吗 别的呢
#10
lzj125302013-05-27 09:58
如果只是为了重载,那么你没有必要编写这个类吧,多余了。我没编译试过这个程序,其他的就没法说了
#11
haoyasen2013-05-27 10:00
回复 10楼 lzj12530
程序没问题
#12
rjsp2013-05-27 10:03
回复 6楼 haoyasen
我不喜欢做这种题目,因为题目本身就违背了C/C++的习俗

程序代码:
#include <cstring>

inline int mymax( int a, int b )
{
    return a>=b ? a : b;
}

inline double mymax( double a, double b )
{
    return a>=b ? a : b;
}

inline const char* mymax( const char* a, const char* b )
{
    return strcmp(a,b)>=0 ? a : b;
}

inline int mymax( const int arr[], size_t n )
{
    if( n == 0 )
        return 0;

    int ret = arr[0];
    for( int i=1; i!=n; ++i )
        if( arr[i] > ret )
            ret = arr[i];
    return ret;
}

#include <iostream>
using namespace std;

int main()
{
    cout << mymax(8,9) << endl;
    cout << mymax(2.0,3.0) << endl;
    cout << mymax("sdf","sad") << endl;

    int arr[] = { 1, 2, 3 };
    size_t n  = sizeof(arr)/sizeof(arr[0]);
    cout << mymax(arr,n) << endl;

    return 0;
}

#13
peach54602013-05-27 10:31
为什么MAX要用引用?
没想通???
#14
peach54602013-05-27 10:32
回复 12楼 rjsp
其实用模板,可以省很多工作量撒...
#15
haoyasen2013-05-27 11:19
回复 14楼 peach5460
嗯 我写了一个 粘贴站出来
#16
haoyasen2013-05-27 11:21
回复 13楼 peach5460
引用效率高 其实对于这个题目来说 无所谓吧 主要是 想 培养一种习惯 先给 自己
#17
haoyasen2013-05-27 11:24
回复 12楼 rjsp
谢谢  你的编程习惯  真的很好  我 提高了 哈哈
#18
peach54602013-05-27 13:28
回复 16楼 haoyasen
基础类型用引用效率真的高吗?呵呵

不要人云亦云,呵呵...

[ 本帖最后由 peach5460 于 2013-5-27 13:30 编辑 ]
#19
子楠2013-05-27 16:46
用类模板试试
#20
haoyasen2013-05-27 19:36
回复 18楼 peach5460
嗯 构造类型高效  谢谢
#21
haoyasen2013-05-27 19:37
回复 19楼 子楠
1