C++学习笔记之 函数

函数

默认参数

#include <cstdlib>
#include <cstdio>

// 默认参数必须写在最后面,例如:int func(int a,int b = 0, int c = 2)
void test(int a, int b = 10)
{
    printf("%d + %d = %d\n",a,b,a+b);
}

int main()
{
    test(1,2);
    test(1); // 相当于test(1,10)

    return EXIT_SUCCESS;
}
1 + 2 = 3
1 + 10 = 11

函数的声明和实现只能一个有默认参数

如果某个位置已经有了默认参数,那么后面的参数必须都是默认参数

占位参数

// 形参中只写数据类型的参数起占位作用,调用时必须传入实参
// 运算符的重载中会涉及到
int func(int a,int)
{
    // ...
}

函数重载

条件

  • 同一个作用域
  • 参数顺序不同
  • 参数数据类型不同
  • 参数个数不同

例:

#include <cstdio>
#include <cstdlib>

int func()
{
    printf("func()\n");
}

int func(int a)
{
    printf("func(int a)\n");
}

int main()
{
    func();
    func(10);

    return EXIT_SUCCESS;
}
func()
func(int a)

作用

#include <cstdio>
#include <cstdlib>

void print(int a)
{
    printf("%d\n",a);
}

void print(char a)
{
    printf("%c\n",a);
}

void print(double a)
{
    printf("%g\n",a);
}

int main()
{
    print(1);
    print('C');
    print(3.14);

    return EXIT_SUCCESS;
}
1
C
3.14

上面这段代码在C语言中是这样的:

#include <cstdio>
#include <cstdlib>

void printi(int a)
{
    printf("%d\n",a);
}

void printc(char a)
{
    printf("%c\n",a);
}

void printd(double a)
{
    printf("%g\n",a);
}

int main()
{
    printi(1);
    printc('C');
    printd(3.14);

    return EXIT_SUCCESS;
}

有种汇编语言的风味

注意事项

  1. 引用的两个版本:const和不加const
    #include <cstdio>
    #include <cstdlib>
    
    void print(int &a)
    {
        printf("%d\n",a);
    }
    
    void print(const int &a)
    {
        printf("%d\n",a);
    }
    
    int main()
    {
        int a = 10;
        print(a);
        print(2);
    
        return EXIT_SUCCESS;
    }
    
    10
    2
    
  2. 如果用引用,就不要值传递
posted @ 2020-11-06 21:33  小宇宙zjy  阅读(48)  评论(0编辑  收藏  举报