【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语言不支持(编译器不支持)
相关文章
|
3月前
|
程序员 C++
C++模板元编程入门
【7月更文挑战第9天】C++模板元编程是一项强大而复杂的技术,它允许程序员在编译时进行复杂的计算和操作,从而提高了程序的性能和灵活性。然而,模板元编程的复杂性和抽象性也使其难以掌握和应用。通过本文的介绍,希望能够帮助你初步了解C++模板元编程的基本概念和技术要点,为进一步深入学习和应用打下坚实的基础。在实际开发中,合理运用模板元编程技术,可以极大地提升程序的性能和可维护性。
|
1月前
|
编译器 Linux C语言
C++基础入门
C++基础入门
|
2月前
|
安全 编译器 程序员
【C++初阶】C++简单入门
【C++初阶】C++简单入门
|
2月前
|
安全 编译器 C++
C++入门 | 函数重载、引用、内联函数
C++入门 | 函数重载、引用、内联函数
27 5
|
2月前
|
存储 安全 编译器
C++入门 | auto关键字、范围for、指针空值nullptr
C++入门 | auto关键字、范围for、指针空值nullptr
51 4
|
2月前
|
编译器 C语言 C++
C++入门 | 命名空间、输入输出、缺省参数
C++入门 | 命名空间、输入输出、缺省参数
40 4
|
2月前
|
编译器 程序员 C语言
C++入门
C++入门
33 5
|
2月前
|
安全 编译器 C语言
C++入门-数组
C++入门-数组
|
2月前
|
存储 编译器 程序员
C++从遗忘到入门
本文主要面向的是曾经学过、了解过C++的同学,旨在帮助这些同学唤醒C++的记忆,提升下自身的技术储备。如果之前完全没接触过C++,也可以整体了解下这门语言。
|
3月前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
下一篇
无影云桌面