MST

星途 面试题库

面试题:C++函数重载匹配规则之中等题

以下是一段C++ 代码: ```cpp #include <iostream> void func(int a) { std::cout << "func(int)" << std::endl; } void func(double a) { std::cout << "func(double)" << std::endl; } int main() { func(5); func(5.5); func('a'); return 0; } ``` 请分析每一次函数调用分别匹配到了哪个重载函数,并简述匹配规则。
14.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. func(5)
    • 匹配到 void func(int a)
    • 匹配规则:实参 5 是整数类型 int,正好与 void func(int a) 函数的形参类型完全匹配,在函数重载解析中,完全匹配的函数优先被选择。
  2. func(5.5)
    • 匹配到 void func(double a)
    • 匹配规则:实参 5.5 是浮点数常量,其默认类型为 double,与 void func(double a) 函数的形参类型完全匹配,所以选择此重载函数。
  3. func('a')
    • 匹配到 void func(int a)
    • 匹配规则:实参 'a' 是字符型常量,在C++ 中,字符型可以隐式转换为整型,'a' 对应的整数值会被传递给 void func(int a) 函数。这种转换属于标准转换序列中的一种,虽然不是完全匹配,但在没有更优匹配的情况下(这里没有 void func(char a) 重载函数),会选择这种能够进行标准转换的函数。