【C++】函数参数的扩展(听课笔记)

本文为听课笔记,课程:

https://ke.qq.com/course/204044

一、函数参数的默认值

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

  当函数调用时没有提供参数的值,则使用默认值。

example :

int mul(int x = 0);

int main(int argc, char *argv[])
{
    printf("%d\n", mul()); //使用默认值 mul(0)
    
    return 0;
}

int mul(int x)
{
    return x * x;
}

(2)参数的默认值必须在函数声明中指定

Question :

①函数定义中是否可以出现参数的默认值?

Test:

#include <stdio.h>
#include <iostream>

int mul(int x );

int main(int argc, char *argv[])
{
	printf("%d\n", mul());
	printf("%d\n", mul(-1));
	printf("%d\n", mul(2));

	system("pause");
	return 0;
}

int mul(int x = 5)
{
	return x * x;
}

编译运行:

②当函数声明和定义的参数默认值不同时会发生什么?

Test:

#include <stdio.h>
#include <iostream>

int mul(int x = 0);

int main(int argc, char *argv[])
{
	printf("%d\n", mul());
	printf("%d\n", mul(-1));
	printf("%d\n", mul(2));

	system("pause");
	return 0;
}

int mul(int x = 5)
{
	return x * x;
}

编译运行:

可见,出现错误:重定义默认参数。

(3)函数默认参数的规则

1.参数的默认值必须从右向左提供
2.函数调用使用了默认值,则后序参数必须使用默认值

Example :

int add(int x,int y=1,int z = 2)
{
    return x + y +z;
}

add(0);       //x = 0,y = 1, z = 2
add(2,3);    //x = 2, y = 3, z = 2
add(3,2,1);   //x = 3,y = 2, z = 1

 

二、函数占位参数

(1)特点

1.占位参数只有参数类型声明,而没有参数名声明
2.一般情况下,在函数体内部无法使用占位参数

Type:

int func(int x, int)
{
	return x;
}
//...
func(1, 2);//ok

(2)函数占位参数的意义

1.占位参数与默认参数结合起来使用
2.兼容C语言中可能出现的不规范写法

Example:

void func();  
void func(void);

这两个函数在C语言中是不等价的,而在C++中是等价的。

在C ++中,使用空参数列表声明的函数不带参数。 在C中,空参数列表表示函数参数的数量和类型未知。

Example:

int f(); // means int f(void) in C++
         // int f( unknown ) in C

<全文完>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值