标题:函数模版和普通函数同名问题
只看楼主
观海听潮
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2016-8-28
结帖率:50%
 问题点数:0 回复次数:2 
函数模版和普通函数同名问题
为什么运行时提示说 对重载函数的调用不明确
#include<iostream>
using namespace std;

int max(int a, int b)
{
    cout<<"普通函数"<< endl;
    return  a>b ? a:b;
}

template<typename T>
T max(T a, T b)
{
    cout<< "函数模版-1"<< endl;
    return a>b ? a:b;
}

template<typename T>
T max(T a, T b, T c)
{
    cout<<"函数模版-2"<< endl;
    return 0;//max(max(a, b), c);
}

int main()
{
    int a = 1;
    int b = 2;

    cout<<max(a, b)<< endl;        //当函数模版和普通函数都符合调用时,优先选择普通函数
    cout<<max<>(a, b)<< endl;    //如显示使用函数模版 则使用<>类型列表
    cout<<max<>(3.0, 4.0)<< endl;    //若函数模版产生更好的匹配 使用函数模版
    cout<<max<>(5.0, 6.0, 7.0)<< endl;    //重装
    cout<<max('a', 100)<< endl;    //调用普通函数 可以隐式类型转换
    return 0;
}
搜索更多相关主题的帖子: return include 
2017-03-13 13:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
首先应该贴出编译器的编译信息,难道想让别人用肉眼编译?

调用不明确,这个提示已经足够清晰了
2017-03-13 18:30
观海听潮
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2016-8-28
得分:0 
3q。。。
2017-03-15 11:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475021-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.109375 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved