• 第8课.函数重载分析(上)


    1.函数重载

    a.用同一个函数名定义不同的函数
    b.当函数名和不同的参数搭配函数的含义不同

        int func(int x)
        {
            return x;
        }
    
        int func(int a, int b)
        {
            return a + b;
        }
    
        int func(const char *s)
        {
            return strlen(s);
        }
    

    2.函数重载至少满足下面的一个条件

    a.参数个数不同
    b.参数类型不同
    c.参数顺序不同

    3.当函数默认参数遇到函数重载会发生什么

        int func(int a,int b, int c = 0)
        {
            return a * b * c;
        }
        
        int func(int a, int b)
        {
            reutrn a + b;
        }
    
        int main()
        {
            int c = func(1, 2)        //which one?
            return 0;
        }
    

    不知道去调用那个函数

    4.编译器调用重载函数的准则

    5.函数重载的注意事项

    a.重载函数在本质上是相互独立不同函数(即函数是不同函数,只不过他们的名字恰好相同而已。函数的入口地址是不同的(下面证明),也跟加说明他们是互相独立的不同函数)
    b.重载函数的函数类型不同。(函数类型是由函数的返回类型和函数的参数类型一起构成)
    c.函数返回值不能作为函数重载的依据
    d.函数重载是由函数名参数列表共同决定的。(当然当遇到指针时还要考虑函数的返回类型,即使用函数类型来确定)

    #include <stdio.h>
    
    int add(int a, int b)  // int(int, int)函数类型
    {
    	return a + b;
    }
    
    int add(int a, int b, int c) // int(int, int, int)函数类型
    {
    	return a + b + c;
    }
    
    int main()
    {
    	printf("%p
    ", (int(*)(int, int))add);        //强制类型转换。(c语言中函数名就是函数的入口地址)
    	printf("%p
    ", (int(*)(int, int, int))add);
    
    	return 0;
    }
    

    两个函数的地址不同,意味着这两个add函数只是同名,是不同的函数

  • 相关阅读:
    python--迭代器与生成器
    python--内置函数
    python--递归、二分查找算法
    【转】Appium根据xpath获取控件实例随笔
    【转】Appium基于安卓的各种FindElement的控件定位方法实践
    Robot Framework + appium 启动手机浏览器的两个方法(1)
    文件夹添加右键DOS快捷入口
    MacOS10.9平台配置Appium+Java环境
    Windows平台配置Appium+Java环境
    java 字符串反转
  • 原文地址:https://www.cnblogs.com/huangdengtao/p/11785347.html
Copyright © 2020-2023  润新知