C++Primer-重载与模板

函数模板可以被另一个模板或普通函数重载,函数匹配规则有所改变:
(1)候选函数包括所有模板实参推断成功的函数模板实例
(2)按照类型转换排序,模板能调用的转换是很有限的
(3)若优先级相同,只有一个普通函数选择普通函数,都是模板选择更特例化的模板

编写重载模板

template<typename T> string debug_rep(const T &t)
{
    ostringstream ret;
    ret << t;
    return ret.str();
}

template<typename T> string debug_rep(const T *p)
{
    ostringstream ret;
    ret << p;
    if(p)
        ret << "" << debug_rep(*p);
    else
        ret << "null pointer";
    return ret.str();
}

const string *sp = &s;
cout << debug_rep(sp) << endl;
//两个都可以,第一个T会被绑定为string*,第二个被绑定为const string,由于第一个模板更通用,所以将会匹配第二个
全部评论

相关推荐

02-24 10:34
门头沟学院 Java
已注销:之前发最美的女孩基本爱答不理,发最帅的hr终于有反馈了,女孩子也要自信起来
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务