函数重载的特殊情况

对于传参,我们可以这样理解,即将形参用给定的实参进行初始化。从这个方面来理解函数重载的一些问题,将会更加清晰。

  • 引用作为重载参数

    这里可以跟为两种情况:

    1. 不含const,此种优先级最高
    2. 包含const,通常在实参为常量时调用该重载  

      下面将对引用作为重载参数进行详细阐述:

      void function(int &a);

      void function(const int &a);

      //使用 int 型变量传入时,讲点用无const重载

      int a = 0;

      function(a);

      //使用常量调用function时使用const重载

      function(10);

  • 含默认参数的重载

    在使用含默认参数的函数重载时,有时会产生函数重载的二义性。

    //有如下两个处于同一作用域的重载函数

    void function(int a, int b=10);

    void function(int a);

    //下面对函数进行调用

    int x= 10;

    function(10);     

    这是,编译器不知道时调用上面的哪一个函数,即产生了函数的二义性。这种情况应该避免。

 

posted @ 2023-02-23 23:34  Meetalone  阅读(16)  评论(0编辑  收藏  举报