在 C++ 中,两个字符串相加的运算符为 + 相当于字符串的合并运算。下面 C++ 代码执行后,将输出 chenadai 。( )
string a="chen";
string b="a";
string c="dai";
string name=a+b+c;
cout<<name<<endl;这题其实就在考 C++ 里 string 类型用 + 号是干嘛的。别被数学加法带偏,直接看变量名 a、b、c 都是 string,那 + 就是拼接。把三块拼起来读一遍,'chen'+'a'+'dai',结果自然就是'chenadai',答案选 A。
很多同学看到 + 号第一反应是算术加法,觉得两个字符串怎么相加?或者担心有隐式转换、报错之类的。其实 C++ 标准库早就重载了 string 的 + 运算符,专门用来做字符串合并。只要确认操作数是 string 类型,就能放心大胆地用 + 连接。这道题的坑就在于命题人故意用绝对化的语气让你怀疑,如果你只背结论不理解运算符重载的本质,很容易选错。
这道题属于 GESP 四级《字符串处理》模块,核心考查的是C++ 运算符重载这一基础语法概念。命题人之所以出这道题,是因为在编程入门阶段,学生最容易产生的认知冲突就是:看到 + 号,大脑本能地调用“数学加法”的经验;而 C++ 中 string 类型的 + 被重载为“字符串拼接”。命题人就是想通过这种“看似简单实则概念陷阱”的方式,检验你是否真正理解了运算符重载的机制,而不是死记硬背代码。
在 C++ 中,std::string 是一个类类型。当你对两个 string 对象使用 + 运算符时,编译器会调用该类定义的 operator+ 函数。这个函数的作用非常直观:它把左边字符串的内容和右边字符串的内容挨个字符拼在一起,生成一个新的 string 对象。
比如: "hello" + "world" 等价于调用 std::string("hello").append("world") 并返回新字符串。
所以,a + b + c 实际上是从左到右依次执行:先算 a + b 得到一个中间字符串,再把这个中间字符串和 c 拼起来。
代码很简单,我们按顺序看变量变化:
1. string a = "chen"; 此时内存里 a 指向一个包含字符 c, h, e, n 的字符串对象。
2. string b = "a"; b 指向单个字符 a。
3. string c = "dai"; c 指向 d, a, i。
4. string name = a + b + c; 这里发生了两次拼接运算: - 第一步:a + b "chen" 和 "a" 拼起来,结果是 "chena"。 - 第二步:("chena") + c "chena" 和 "dai" 拼起来,结果是 "chenadai"。 最终 name 就是一个包含 c, h, e, n, a, d, a, i 的字符串。
5. cout << name << endl; 输出 name 的内容,就是 chenadai。
所以,题目说“将输出 chenadai”,这个陈述是完全正确的。
这道题的陷阱主要在于心理预期和对运算符的刻板印象:
+ 对字符串是非法的或者会报错,从而选错。a + b + c 换成 name = "chen" + "a" + "dai",答案不变;如果换成 name += "a" + "dai",逻辑依然相同。这说明关键在于 + 对 string 的定义,而不是具体的变量名或写法。避坑心法:拿到这类题,先问自己“操作数是什么类型?”,确认是 string 后,直接联想到“拼接”,然后按顺序模拟一下拼接过程。不要纠结于“字符串怎么相加”,因为 C++ 已经帮你定义好了。
从题库数据来看,基础语法(含运算符重载)是历年考试的高频考点,共考过 1295 题,覆盖 11 个级别。逐年分布显示:2023 年 287 题、2024 年 413 题、2025 年 401 题、2026 年 109 题,说明近年来对基础语法的考查力度持续加大。在 GESP 四级中,这类基础语法题占比约为 186 题(四级总题量约 186 题,基础语法是其中重要组成部分)。
控制结构和循环结构虽然题量更大,但本题并不涉及,属于干扰项。
基于上述数据趋势,可以合理预测:
string 的 +、+=)仍将是高频考点,预计每年至少有 100-150 题直接考查相关概念。string + string 的拼接是基础中的基础,未来可能会增加一层嵌套,比如 string a = "a"; string b = "b"; string c = a + b + a; 这种需要多步拼接的题目,或者结合 += 的累加操作。暂无足够依据预测具体某一年会出什么新题型,但“字符串拼接”这一核心概念的重要性不会减弱。
这道题的答案是 A. 正确。解题的关键在于: 1. 识别出 a, b, c 都是 string 类型; 2. 理解 C++ 中 + 对 string 是拼接运算符; 3. 按顺序模拟拼接过程:"chen" + "a" = "chena","chena" + "dai" = "chenadai"; 4. 输出结果即为 chenadai,与题目描述一致。
记住:遇到字符串用 +,放心拼接,别被数学加法带偏。