zoukankan      html  css  js  c++  java
  • C++入门--函数重载

    举例:实现比较两个数的大小

    #include <iostream>
    #include <string>
    using namespace std;
    
    #define GETMAX(a, b) ((a) > (b)) ? (a) : (b);
    inline int getMax(int a, int b) { return ((a) > (b)) ? (a) : (b); }
    
    int main(int argc, char const* argv[]) {
        int n = getMax(1, 2);
        int n1 = GETMAX(1, 2);
        char* p = nullptr;
        char* q = nullptr;
        char* m = GETMAX(p, q);
    
        return 0;
    }

    使用宏,虽然可以实现忽略传入的数据类型,但是不安全

    使用(内联)函数,虽然更安全,但是由于有类型检查而扩展性不好

    在C++中允许出现同名的函数--函数重载

    条件(函数要素:函数名、函数参数、函数返回值、函数的调用约定):

    1.函数名必须相同

    2.函数参数个数不同,类型不同,类型顺序不同

    3.函数的返回值,调用约定不做考虑

    4.作用域相同

    函数重载的调用规则

    1.根据函数名找对应的函数,作为候选函数

      1.1如果候选函数个数为0,则报为定义错误(找不到标识符)

    2.候选函数个数>0,从候选中找匹配的函数(完全匹配,可以转换的匹配【char <-->int】【float<-->double】【float<-->int】)

      2.1如果匹配的函数个数 == 0,则错误(隐式转换失败)

      2.2如果匹配个数>0,找匹配最佳

    3.最佳匹配个数 = 1,就调用该函数

       最佳匹配个数 > 1,就会报二义性

  • 相关阅读:
    [CF340D]Bubble Sort Graph/[JZOJ3485]独立集
    [JZOJ3484]密码
    [HDU1756]Cupid's Arrow
    Luogu P4006 小 Y 和二叉树
    Luogu P4040 [AHOI2014/JSOI2014]宅男计划
    Luogu P3243 [HNOI2015]菜肴制作
    Luogu P3942 将军令
    Luogu P4823 [TJOI2013]拯救小矮人
    Luogu P3620 [APIO/CTSC 2007]数据备份
    BZOJ3709 [PA2014]Bohater
  • 原文地址:https://www.cnblogs.com/y4247464/p/13815541.html
Copyright © 2011-2022 走看看