c++函数重载与匹配

本文介绍了C++中的函数重载匹配规则,包括精确匹配、常量版本匹配、变量提升、算数/指针转换和类类型转换。特别讨论了常量版本重载的细节,以及变量提升和算数转换的区别。并提醒在函数调用时可能出现的二义性错误,如传入int型实参在float和double版本函数之间的选择问题。
摘要由CSDN通过智能技术生成

重载匹配

匹配规则
  1. 精确匹配
  2. 常量版本匹配
  3. 变量提升
  4. 算数/指针转换
  5. 类类型转换

当我们为函数重载,并调用重载后的函数时,编译器会自动根据参数类型进行匹配与转换但是此时
容易出现二义性错误,函数参数转换与类型提升容易混淆,例如当我们同时重载了float、double
版本的函数时,传入一个int型实参,就会引起二义性错误

示例理解

常量版本重载与匹配

常量版本不是指const int和int这样的重载,而是指在底层与上层具有不同const含义的变量,
例如指针,const int*,和int不同,前者指向一个无法更改的int常量(底层不变),而有时容易
将const int
和int *const搞混,后者是顶层不变,即定义的此变量不能改变,在函数重载时,
int * const和int *具有等价的意义。类似const int和int具有等价意义。

    1
        int a(const int *){
            return 0;
        }
    2
        int a(int *){
            return 1;
        }
    3
        int a(int){
            return 2;
        }
    4
        int a(const int){
            return 3;
        }
    5
        int a(int&){
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值