C++模板编程->分辨重载优先级

本文详细探讨了在C++中选择函数模板与非模板函数时的三种准则,包括形参表类型匹配、函数模板实例化以及选择更为‘特殊’的函数策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


准则一:

    两候选函数  一方其形参表各类型 与 调用实参列表各类型更匹配,则优先。

准则二:

    在准则一无法分辨的情况下,一方函数模板实例而另一方为非模板函数,则取非模板函数。

准则三:

    在前两个准则都无法分辨的情况下,取更为“特殊”的一方而淘汰另一方。

代码如下:

template<typename T>
void func(T v)
{
    cout<<"template<typename T>"<<v<<endl;
}

/*
template< >
void func(float v)
{
    cout<<"template<>"<<v<<endl;
}
*/
void func(float v)
{
    cout<<"void func float"<<v<<endl;
}

void func(int v)
{
    cout<<"void func int"<<v<<endl;
}
int main(int argc, char const *argv[])
{
    func(1);

    func(1.0);

    func(1.f);
 
	func<>(1.f);
    system("pause");
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值