下面代码可以正常编译并输出 10。
#include <iostream>
using namespace std;
int calculate(int x, int y = 10);
int main() {
cout << calculate(5); // 调用1
return 0;
}
int calculate(int x, int y) {
return x * y;
}
int calculate(int x) { // 重载函数
return x * 2;
}答案B。指针和数组的代码追踪:画出变量和指针的内存示意图,追踪每次赋值后值的变化。
指针和数组追踪时画内存布局图可以大大简化理解。
【考点】函数默认参数|函数重载|歧义调用
本题考查 GESP 四级《C++ 基础语法》中"函数定义与重载"模块。命题人专门设计这道题卡住两类考生:一类对 C++ 默认参数机制理解不清,误以为调用时会自动补全参数;另一类忽视了重载解析规则,未察觉编译器面对多个匹配函数时的歧义判定。这道题表面简单,实则精准打击"认为代码能编译"的过度自信。