C++函数以及函数重载

函数默认参数

  • 函数某个形参有默认参数值,其后面的参数都必须有默认参数值

int fun(int a, int b = 10, int c = 3) //正确
{
	
}

int fun(int a, int b = 10, int c)   //错误
{
	
}
  • 函数声明有默认参数值,实现就不能有函数值

正确:

void fun(int a = 10, int b = 20);

void fun(int a, int b)
{
	...
}

错误:

void fun(int a = 10, int b = 20);  //声明已经有默认参数

void fun(int a = 10, int b = 20)
{
	...
}

函数占位参数

函数参数列表可以有占位参数,用来占位,调用时必须填补该位。

语法:

<返回值类型> <函数名> ( <数据类型>)
{
	...
}
void fun(int a, int)   //int为占位参数
{
	...	
}

函数重载

定义:

**形参表不同(参数的类型、参数个数、参数的顺序)**的若干个函数使用相同的函数名

  • 函数重载的条件

    1、同一个作用域下

    2、函数名相同

    3、函数参数类型不同,或者个数不同,或者参数顺序不同

注意:

仅仅函数返回值类型不同不能重载。
int func(int x, int y)
{
	...
}

float func(float x, float y)   //形参类型不同
{
    ...
}

char func(char x, char y)       //形参类型不同
{
    ...
}

int func(int x)               //形参个数不同
{
    ...
}

int func(int x, double x)         //参数顺序不同
{
    ...
}
int func(double y, int x)         //参数顺序不同
{
    ...
}

  • 函数重载的注意事项

    • 引用作为重载条件

      void fun(int &a)   //形参为引用
      {
      	...
      }
      
      void fun(const int &a)  //形参为常引用
      {
          ...
      }
      
      //两个函数属于类型不同,可以重载
      
    • 函数有默认参数

      void fun(int a, int b = 10)
      {
      	...
      }
      
      void fun(int a)
      {
      	...
      }
      
      int main(void)
      {
      	fun(a);     //两个fun都可以被调用,出现二义性,错误用法
      }
      

      注意:

      函数重载避免带默认参数

重载体现了C++作为OOP编程语言多态的特性。

猜你喜欢

转载自blog.csdn.net/qq_36413982/article/details/105472917