【C++】C++入门 缺省参数

简介: 【C++】C++入门 缺省参数

一、缺省参数

1、C/C++函数空参数的区别

  • 在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数;
#include<stdio.h>
void Test()
{
}
int main()
{
    Test(10);
    Test(10, "hello");
    return 0;
}

  • 在C++中,因为有严格的参数类型检测,所以函数没有参数列表时,默认为void,不接收任何参数。
#include<iostream>
using namespace std;
void Test()
{
}
int main()
{
    Test(10);
    Test(10, "hello");
    return 0;
}

2、缺省参数概念

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。

#include<iostream>
using namespace std;
void Func(int a = 0)//给参数a指定一个缺省值
{
  cout << a << endl;
}
int main()
{
  Func(); // 没有传参时,使用参数的默认值,输出为0
  Func(10); // 传参时,使用指定的实参,输出为10
  return 0;
}

3、缺省参数分类

  • 全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
{
   cout<<"a = "<<a<<endl;
   cout<<"b = "<<b<<endl;
   cout<<"c = "<<c<<endl;
}
  • 半缺省参数
void Func(int a, int b = 10, int c = 20)//此时a必须要接受到参数
{
   cout<<"a = "<<a<<endl;
   cout<<"b = "<<b<<endl;
   cout<<"c = "<<c<<endl;
}

注意:半缺省参数必须从右往左依次缺省,不能间隔着缺省

void Func(int a=10, int b , int c = 20)//报错
{
  cout << "a = " << a << endl;
  cout << "b = " << b << endl;
  cout << "c = " << c << endl;
}

二、注意事项

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给
#include<iostream>
using namespace std;
void Func(int a=10, int b=20 , int c = 30)
{
  cout << "a = " << a << endl;
  cout << "b = " << b << endl;
  cout << "c = " << c << endl;
}
int main()
{
  Func(1, 2, 3);
  Func(1, 2);
  Func(1, ,3);//报错
  return 0;
}
  1. 缺省参数不能在函数声明和定义中同时出现,应该在声明中给予缺省值
#include<iostream>
using namespace std;
void Func(int a = 10);
int main()
{
  Func();
  return 0;
}
void Func(int a = 10)
{
  cout << "a = " << a << endl;
}

  1. 缺省值必须是常量或者全局变量
  2. C语言不支持(编译器不支持)
相关文章
|
1月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
38 2
C++入门12——详解多态1
|
1月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
23 3
|
1月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
29 2
|
1月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
79 1
|
1月前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
67 1
|
1月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
19 1
|
1月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
30 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
41 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
1月前
|
存储 安全 编译器
【C++打怪之路Lv1】-- 入门二级
【C++打怪之路Lv1】-- 入门二级
23 0
|
1月前
|
自然语言处理 编译器 C语言
【C++打怪之路Lv1】-- C++开篇(入门)
【C++打怪之路Lv1】-- C++开篇(入门)
24 0