C++ – 函数

函数默认参数

1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值。
2. 如果函数声明有默认值,函数实现的时候就不能有默认参数。函数实现和声明只能一个有默认参数。  (我没事我什么要去写一个函数声明,我又不写在下面)
 
ps:注意和python里面函数参数的区别。
 
 

函数的占位参数

C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置。
函数部分只写了一个数据类型,表示一个占位参数。
#include<iostream>
using namespace std;

//函数占位参数 ,占位参数也可以有默认参数 
void w(int a,int)
{
    cout<<"this is w"<<endl;
}

int main()
{
    //调用函数的时候,占位参数必须填补
    w(10,10);
    return 0;
}

 

 

函数重载

作用:函数名可以相同,提高复用性。
 
函数重载满足条件:
1、同一个作用域下;
2、函数名称相同;
3、函数参数类型不同 或者 个数不同 或者 顺序不同。
注意: 函数的返回值不可以作为函数重载的条件,类型不同可以是数据类型不同,也可以是const int &和int &的不同。
#include<iostream>
using namespace std;

void w1()
{
    cout<<"调用w1"<<endl;
}

void w1(int x)
{
    cout<<"调用w1****"<<endl;
}

int main()
{
    w1(1); // cout<<"调用w1****"<<endl;
    return 0;
}

 

这个clion可以编译出,但是不对吧应该?

C++ - 函数

#include<iostream>
using namespace std;

void w(int x,int y)
{
    cout<<"调用w1"<<endl;
}

void w1(int y,int x)
{
    cout<<"调用w1****"<<endl;
}

int main()
{
    w1(1,9); // cout<<"调用w1****"<<endl;
    return 0;
}

View Code

输出:调用w1****

 

 

函数重载注意事项

1、引用作为重载条件;
2、函数重载碰到函数默认参数。
#include<iostream>

using namespace std;

//1、引用作为重载条件
void w1(int&a)
{
    cout<<"调用 1"<<endl;
}

void w1(const int&a)
{
    cout<<"调用 2"<<endl;
}


//2、函数重载碰到函数默认参数
void w2(int a,int b=10)
{
    cout<<"调用 3"<<endl;
}

void w2(int a)
{
    cout<<"调用 4"<<endl;
}

int main()
{
    int a=10;
    w1(a); // 调用无const(可读可写)

    w1(10);//调用有const
    // 如果是无const的话,函数就相当于是int &a=10; 这种语法无法编译
    //调用有const的时候,const int &a=10;这样子是可以的

    //w2(10); //碰到默认参数产生歧义(二义性),需要避免
    //尽量不要加默认参数了吧还是
    return 0;
}

 

 

原文链接: https://www.cnblogs.com/huangkenicole/p/13071647.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ - 函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/353894

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午8:19
下一篇 2023年3月2日 上午8:19

相关推荐