C ++ learning (7) - to improve the function

1. The default function arguments

In C ++, the parameter list of the function parameter can have default values

grammar:返回值类型 函数名 (参数=默认值){}

note

  1. If a location has been the default parameters, then from this position in the future, from left to right must have a default value

  2. If you declare a function with default parameters, then the implementation of a function can not have default parameters

#include<iostream>
using namespace std;

//函数的默认参数

//如果我们自己传入数据,就用自己的数据,如果没有,那么用默认值
int func(int a, int b=20, int c=30){
    return a+b+c;
}

//注意事项
//1. 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值
//2. 如果函数的声明有了默认参数,那么函数的实现就不可以有默认参数
int main(){

    cout<<func(10,30)<<endl;
    return 0;

}

2. placeholder function parameter

C ++ function in the parameter list where you can have a placeholder parameters used for placeholder, it must call the function to fill the position

grammar:返回值类型 函数名(数据类型){}

#include<iostream>
using namespace std;

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


int main(){

    func(10);
    return 0;

}

3. function overloading

3.1 Overview of function overloading

Role : function name can be the same, increase reusability

Function overloading satisfy the conditions :

  • Under the same scope
  • The same function name
  • Function parameters of different types or a different number or a different order

Note : The return value as a function of the conditions can not be overloaded

#include<iostream>
using namespace std;

//函数重载
//可以让函数名相同,提高复用性

//函数重载的满足调价
//1.必须在同一个作用域下
//2.函数名称相同
//3.函数参数类型不同或者个数不同或者顺序不同
void func(){
    cout<<"this is func"<<endl;
}

void func(int a){
    cout<<"this is func(int a)"<<endl;
}

void func(double a){
    cout<<"this is func(double a)"<<endl;
}

//注意事项
//函数的返回值不可以做为函数重载的条件

int main(){

    func();
    func(10);
    func(3.14);
    return 0;

}

3.2 function overloading Notes

  • As the overload condition cited
  • Function overloading met default function arguments
#include<iostream>
using namespace std;

//函数重载的注意事项
//1.引用作为重载的条件
void func(int &a){    
    cout<<"this is func(int &a)"<<endl;
}

void func(const int &a){
    cout<<"this is func(const int &a)"<<endl;
}

//2.函数重载碰到默认参数
void func2(int a, int b = 10){
    cout<<"this is func2(int a)"<<endl;
}

void func2(int a){
    cout<<"this is func2(int a)"<<endl;
}

int main(){

    int a = 10;
    func(a);

    func(10);

    func2(10);  //报错,出现二义性

    return 0;

}

Guess you like

Origin www.cnblogs.com/maeryouyou/p/11979338.html