c++缺省参数与函数重载

本文介绍了C++中的函数参数默认值设定,强调了必须从左到右指定缺省参数,并且不能同时在声明和定义中给出。同时,解释了函数重载的概念,指出C语言不支持函数重载的原因,即符号表中函数名冲突。示例代码展示了如何正确使用默认参数和函数重载。
摘要由CSDN通过智能技术生成

缺省参数

void testfun(int a = 0)//缺省参数、默认参数
{
    cout << a << endl;
}
void testfun1(int a = 10, int b = 20, int c = 30 )//全缺省
{
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
}
void testfun1(int a , int b = 20, int c = 30 )//半缺省
int main
{
    testfun();//没有传参时使用参数的默认值
    testfun(1);
    testfun1(1);
    testfun1(1,2);
    testfun1(1,2,3);
    return 0;
}

⚠️必须从左往右缺省,并且连续

❌❌❌缺省参数不能在声明和定义中同时出现,编译器不知道使用哪个

//queue.h
#pragma once
#include <iostream>
void queueinit(int n = 10 );//声明给定义不给时,给不给传参都可编译
void queueinit(int n);//当声明不给,定义给时,不传参时编译不通过
//test.cpp
#include"queue.h"
int main()
{
    queueinit();
    queueinit(1);
    return 0;
}

🙌编译的时候会展开当前文件所包含的头文件,而此时头文件中的声明中没有给默认参数,如果不传参数就会编译报错,链接的时候才会去找函数的地址和定义

函数重载

⚠️⚠️⚠️c语言不支持同名函数,c++支持

💕要求:参数名相同----函数重载

💕参数不同:参数个数/类型/顺序

💕返回值不同不构成重载

int add(int left, int right);
int add(double left, double right);
int main()
{
     cout << add(1, 2) << endl;
     cout << add(1.1, 2.2) << endl;
}

❓❓❓c语言为什么不支持函数重载

 

 🙌c语言中符号表中直接以函数名为名称,当两函数名称相同时(函数重载)会出现函数地址冲突,不支持函数重载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值