zoukankan      html  css  js  c++  java
  • c++之函数重载(函数匹配)

    Case

    void f();
    void f(int);
    void f(int, int);
    void f(double, double = 3.14);

    匹配原则:

    1)其形参数量与本次调用提供的实参数量相等

    2)每个实参的类型与对应的形参类型相同,或者可以转换成形参的类型;

    寻找最佳匹配:

    1)该函数每个实参的匹配都不劣于其他可行函数需要的匹配;

    2)至少有一个实参的匹配优于其他可行函数提供的匹配;

    例子:

    a) f(2.56,38);
    b) f(38);
    c) f(32,0);
    d) f(3.9,9.8);

    a)可行函数是void f(int, int)与void f(double, double =3.2)。但是最佳匹配不存在,考虑第一个参数 void f(double, double =3.2) 优势明显;

    但考虑到第二个实参38时,void f(int, int) 优势明显,具有二义性而拒绝其请求;

    b)void f(int);

    c)void f(int, int);

    d)double f(double, double = 3.2);

    tips:函数重载时,应尽量避免强制类型转换。

    函数匹配与const实参

    Record(Acount&);
    Record(const Acount&);
    
    const Acount a;
    Acount b;
    
    Record(a); //调用Record(const Acount&);
    Record(b);//调用Record(Acount&);
  • 相关阅读:
    《构建之法》心得体会
    简单工厂模式加减乘除器
    个人简介
    单元测试和代码覆盖率工具的使用
    Bookstore系统缺陷报告
    《构建之法读后感》
    3137102432_ 施少兵_ lab3
    3137102432_施少兵_实验2
    个人简介
    第六次作业:购物系统缺陷
  • 原文地址:https://www.cnblogs.com/iloverain/p/5796932.html
Copyright © 2011-2022 走看看