函数参数相关(默认参数,占位参数)

C++中可以在函数声明时为参数提供一个默认值,

当函数调用时没有指定这个参数的值,编译器会自动用默认值代替

函数默认参数的规则

只有参数列表后面部分的参数才可以提供默认参数值

一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值

#include <iostream>
using namespace std;

void myPrint(int x = 3)
{
    cout<<"x="<<x<<endl;
}
//在默认参数规则 ,如果默认参数出现,那么右边的都必须有默认参数
void myPrint2(int x = 3, int y = 4)
{
    cout<<"x="<<x<<endl;
}

int main(void)
{
    //1 若 你填写参数,使用你填写的,不填写 则默认
    myPrint(4);
    myPrint();

    return 0;
}

占位参数:

//函数占位参数 函数调用时,必须写够参数
void func1(int a,int b,int)
{
    cout<<"a="<<a<<" b="<<b<<endl;
}

void func2(int a,int b,int = 0)
{
    cout<<"a="<<a<<" b="<<b<<endl;
}

int main(void)
{
    //func1(1,2); //too few arguments to function ‘void func1(int, int, int)‘
    func1(1,2,3);

    func2(1,2);
    func2(1,2,3);

    return 0;
}

运行结果:

原文地址:https://www.cnblogs.com/Liu-Jing/p/9693642.html

时间: 2024-08-01 00:38:12

函数参数相关(默认参数,占位参数)的相关文章

?Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1.2语言快速入门v2.0. [示例7-11]以下的代码就为外部参数toString.withJoiner设置了默认的参数"Swift"和"---".代码如下: import Foundation func join(string s1: String, toString

C++中的const,引用本质,内联,默认/占位参数,

1.C++中的const (1).C++中的const是真正的常量,可以进行数组大小的定义: 代码如下: #include<iostream> using namespace std; #define A 10 int main(void){     int a = 10;      int array[a]; //Linux内核支持这样定义数组,其他的编译器不支持     const int a = 10;  //这里是常量,所以可以进行下面的数组大小的确定:     int array[a

?Swift语言中为外部参数设置默认值,可变参数,常量参数,变量参数,输入输出参数

引用自这里:Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 目录[-] 7.4.4  为外部参数设置默认值 7.4.5  可变参数 7.4.6  常量参数和变量参数 7.4.7  输入-输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1.2语言快速入门v2.0. [示例7-11]以下的代码就为外部参数toString.withJoiner设置了默认的参数"Swift"和&qu

内联函数、默认参数和函数占位参数

内联函数 定义:内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质.内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处.编译时,类似宏替换,使用函数体替换调用处的函数名.一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理. C++中的const常量可以替代宏常数定义,如: const int A = 3; ? #define A 3 C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!) C++

C++基础 inline 默认参数 函数占位参数

1. inline内联函数 内联函数用于替换宏, 实例: 其中宏和 ++ 连用有副作用. #include "iostream" using namespace std; #define MYFUNC(a, b) ((a) < (b) ? (a) : (b)) inline int myfunc(int a, int b) { return a < b ? a : b; } int main() { int a = 1; int b = 3; //int c = myfun

C++对C的函数的扩展==》函数参数相关扩展

三块内容:1 默认参数 2 函数占位参数 3 默认参数和占位参数 1 默认参数 2 占位参数 3 默认参数和占位参数

c++-内联函数和函数重载和默认参数和函数指针

内联函数 C++ 内联函数是通常与类一起使用.如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方. 对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数. 如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义.如果已定义的函数多于一行,编译器会忽略 inline 限定符. 在类定义中的定义的函数都是内联函数,即使没有使用 inline 说

函数的非固定参数,默认参数,参数组

默认参数: 也可以给默认参数赋值,这个时候就取代了默认的值了: 默认参数的特点:调用函数的时候,默认参数非必须传递: 作用:1.自定义安装软件,默认安装值: 2.连接数据库的参数:比如默认端口号3306 参数组: *args,这个就是参数组,前面有一个星号*,后面可以跟任意字母,定义一个参数组. 接受多个实参,然后把实参放到一个元祖里去.下面的列表作为实参,也是可以的.不过都是转换为元祖. 也可以这么应用,如下图: 如果传输字典实参到函数,可以如下:**kwargs,两个*.把N个关键字参数,转

【转】深入理解C++的动态绑定和静态绑定 &amp; 不要重定义虚函数中的默认参数

为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误.需要理解四个名词:1.对象的静态类型:对象在声明时采用的类型.是在编译期确定的.2.对象的动态类型:目前所指对象的类型.是在运行期决定的.对象的动态类型可以更改,但是静态类型无法更改.关于对象的静态类型和动态类型,看一个示例: class B { } class C : public B { } class D : public B { } D* pD = new D();//p