C++学习笔记2--函数重载与默认参数

函数多态是C++在C语言基础上新增的功能。默认参数让您可以使用不同数目的参数调用同一个函数,而函数多态让您可以使用多个同名的函数。

1.1 函数重载的使用

   函数重载可以是以下几种情况:1. 参数的个数不同,2. 参数的类型不同,3. 顺序不同, 和返回值无关

问题:如何访问一个重载函数的地址?
回答: 我们可以通过函数指针进行匹配。

#include<iostream>
#include<stdio.h>
//参数的个数,参数的类型不同,顺序不同,返回值无关
void go(int a)
{

    std::cout << a;

}
void go(double a)  // 参数类型不同
{
    std::cout << a;

}
void go(double a,int b ) //参数个数不同
{
    std::cout << a << b;

}

void go(int  a, double b)  //参数的顺序不同
{
    std::cout << a << b;


}

int main()
{
    void(*pgo1)(int a)=go;
    void(*pgo2)(double a)=go;
    void(*pgo3)(double a, int b)=go;
    void(*pgo4)(int  a, double b)=go;
    printf("%p\n",pgo1);
    printf("%p\n", pgo2);
    printf("%p\n", pgo3);
    printf("%p\n", pgo4);
    getchar();
    return 0;

}

输出

这里写图片描述

1.2 函数的默认参数

在C语言中我们是没有默认参数这一个说法的,默认参数是C++新的功能。默认参数是指的是当函数调用中省略实参时自动使用的一个值。对于带参数列表的函数,必须从右往左添加默认值,也就是说,要为某个参数设置默认值,则必须为右边的所有参数提供默认值。 另外,实参按照从左往右的顺序依次赋值给相应的形参,而不能跳过任何参数。 通过使用默认参数,可以减少要定义的析构函数、方法以及方法重载的数量。

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


//默认参数必须放在右边
//默认参数中间不允许出现不默认的

void print(int c,int a = 1, int d=2, int b = 3)
{
    std::cout << a<<b<<c << std::endl;

}

void print(double c)
{

}


int main()
{
    //print(1,2,3);
    //函数指针没有默认参数,必须全部输入数据
    //函数重载与函数默认参数冲突,需要你输入的参数类型不一个,个数不一样,顺序不一样不会出现问题,否则一定报错
    void(*pt1)(int c, int a , int d , int b ) = print;
    pt1(100,1,2,3);//函数指针调用,没有用默认的

    print(100);
    system("pause");
    return 0;
}

这里写图片描述
注意一下
1. 函数指针是不可以输入默认参数的。
2. /函数重载与函数默认参数冲突,优先可以使用命名空间解决,实在不行使用函数指针解决。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值