在 C++ 类的定义中,使用 static 修饰符定义的静态成员被该类的所有对象共享。
这题考类成员作用域。看到 static 别慌,直接想:它存哪儿?类静态区只有一份,跟对象个数无关,所以天然共享,选 A。
学生最容易把 static 当成全局变量,以为每个 new 出来的对象都会复制一份数据,或者混淆 static 成员和常量成员,误以为只有 static const 才共享。其实 static 的核心就是‘类作用域’,只要属于类,所有对象共用同一份内存,跟对象数量无关。
【考点】C++类成员作用域与static修饰符。
1. 概念厘清 在C++类中,成员变量默认属于‘对象’,每个对象都有自己的一份拷贝。而用static修饰的成员,属于‘类’本身,只有一份,存储在类静态数据区,不随对象的创建而复制。这是‘类作用域’与‘对象作用域’的根本区别。
2. 命题视角 命题人专门挖‘实例成员 vs 静态成员’的坑。题目给出一句话‘所有对象共享’,看似简单,实则考察你是否理解static的本质是‘类属性’而非‘对象属性’。如果不理解类作用域,很容易误以为每个对象独立拥有,从而选错。
3. 解题心法 拿到题先抓关键词:static修饰符 + 共享。直接回忆语法定义:static成员只有一份,存在类静态区,不随new产生新副本。推理链:static成员→类作用域→唯一实例→共享。这类题通法:遇到‘类/对象/共享/唯一’组合,先想‘这个概念属于类还是属于对象?’若属于类,则共享;属于对象,则每个实例独立。
4. 避坑指南 B选项的错误设计源于三类典型误区:一是把static当成C语言里的全局变量理解,误以为每个new对象都会复制一份;二是混淆‘静态成员’与‘常量成员’,以为static const才共享;三是偷换‘类定义’与‘类作用域’,误以为static只在定义处生效。最阴险的细节是‘所有对象’这四个字——它暗示了‘每个对象都有’,而命题人恰恰利用你对‘类作用域’与‘对象作用域’的模糊,让你以为静态成员是每个对象的私有属性。如果你只背‘static成员是共享的’这句结论,没理解‘类作用域’才是共享的根本,掉进B选项的陷阱就顺理成章了。
5. 考频与趋势 根据题库数据,static成员相关考点在GESP六级中已考过78题,属于高频考点。从2023年到2026年,六级题目数量呈上升趋势(2023年287题、2024年413题、2025年401题、2026年109题),说明命题人对基础语法的考察力度在加大,尤其是类与对象、函数重载、虚函数等核心概念。
6. 预测 基于数据与经验,未来六级考试仍会重点考察类的作用域机制,特别是static成员、const成员、虚函数与多态的区分。命题人可能会继续用‘所有对象共享’这类看似简单实则陷阱重重的描述来测试学生的理解深度。因此,建议学生在复习时不仅要记住结论,更要理解背后的作用域原理,避免掉进类似的坑。