zoukankan      html  css  js  c++  java
  • 第7章 函数重载与默认参数

      名字修饰

      假设重载了两个函数名:

        print(float);
        print(char);

      无论这两个函数是某个类的成员函数,还是全局函数都无关紧要。如果编译器只使用函数名的域,编译器并不能产生惟一的内部标识符,这两种情况下都得用_print结尾。重载函数的思想是让我们用同名的函数,但这些函数的参数列表应该不一样。所以,为了让重载函数正确工作,编译器要用不同的参数类型来修饰不同的函数名,以供它和连接器使用。上面的两个在全局范围定义的函数,可能会产生类似于_print_float_print_char的内部名。但不同的编译器可能会产生不同的内部名。

      C++中禁止仅仅靠返回值来重载函数。在C中,总是可以调用一个函数但忽略它的返回值,即调用了函数的副作用,在这种情况下,编译器如何知道调用哪个函数呢?

     

      默认参数

      在使用默认参数时必须记住两条规则。第一,只有参数列表的后部参数才是可默认的,也就是说,不可以在一个默认参数后面又跟一个非默认的参数。第二,一旦在一个函数调用中开始使用默认参数,那么这个参数后面的所有参数都必须是默认的。

     

      我们使用两个完全不相干的函数维护两个函数的代码,而不是使用默认参数把它们组合成一个函数。这样,维护起来就跟容易,尤其是当函数特别大时。

  • 相关阅读:
    leetcode 11. 盛最多水的容器
    gluoncv 导入方式
    python import
    leetcode 55.跳跃游戏
    leetcode 31. 下一个排列
    gluoncv 下载预训练模型速度太慢
    gluoncv voc_detection
    shuf 按行打乱文本命令
    __call__
    @property 装饰器
  • 原文地址:https://www.cnblogs.com/sheshiji/p/3427697.html
Copyright © 2011-2022 走看看