Advertisement

C++中的函数重载及其匹配机制

阅读量:

重载匹配

匹配规则

  1. 完全对应
  2. 固定值版本对应
  3. 可变参数增强
  4. 算术/指针类型转换
  5. 类型转换

在对函数进行重载处理,并执行重载函数调用的过程中,编译系统会依据参数的数据类型自动完成匹配与相应的类型转换。然而,在这一过程中往往容易引发二义性问题,特别是在函数参数的类型转换与提升操作之间产生混淆。例如,当同时存在针对float和double类型的函数重载版本时,若传入一个整型的实际参数,则可能造成二义性错误的发生。

示例理解

常量版本重载与匹配机制

常量版本并非特指const int与int之间的重载关系,而是指在程序的底层与上层所体现的const特性存在差异的变量类型。例如指针类型,其中const int与int在本质上存在区别,前者所指向的是一个不可修改的整型常量(底层保持不变),而有时人们容易混淆const int*与int const这两种形式,后者表示的是顶层恒定,即该变量本身不可更改。在函数重载过程中,int * const与int具有相同的含义。类似地,const int与int在某些情况下也表现出等价性。

复制代码
    1
        int a(const int *){
            return 0;
        }

全部评论 (0)

还没有任何评论哟~