C++函数特性

219 阅读1分钟

C++函数特性

1.函数参数缺省值

  1. 全部指定
void fun(int a = 12, char c = 'c')
{
 cout << "a="<<a <<" c="<< c << endl;
}

int main()
{
 fun();
 return 0;
}

结果: 2. 部分指定

void fun(int a , char c = 'c',float f = 123.123f)
{
 cout << "a=" << a << " c=" << c<<" f="<<f << endl;
}

int main()
{
 fun(1,'f',123.344f);
 return 0;
}

结果:

注意点:

  1. 部分指定时,需要从左向右连续指定,下面为错误示范
void fun(int a = 12,char c,float f = 123.123f)
  1. 调用函数时,有默认值的参数可以不用传递实参,没有指定默认值的参数一定要传递实参
  2. 有默认值,传递实参,会将默认值覆盖掉
  3. 函数声明处指定值,函数实现时无须指定默认值

2. 函数重载

定义:在同一个作用域内,函数名相同,但函数列表,参数个数,参数类型不一样

示例:

int fun(int a)
int fun(char c)
int fun(int a,char c)

注意点:

  1. 默认参数与函数重载使用,可能会造成调用不明确
void  fun1(int a, int b, int c = 0);
void  fun1(int a, int b);
int main()
{
    fun(1,2); //传递两个参数,编译正常,但运行时候会报错
}

2.返回值不可以作为函数重载的条件

int fun();
void fun();   //这种声明方式报重定义错误
  1. 参数是浮点型float,double的互为重载的函数,一定要注意参数传递

3. 防止头文件重复

在C语言中:

#ifndef _xx_xx_H
#define _xx_xx_H
........................
#endif

C++中直接在头文件前面处添加#pragma once表示后面的文件只编译一次,但是不是使用的编译器都支持的

本文使用 mdnice 排版