下列代码合法,因为派生类可以直接访问基类的私有成员 value 。
class Base {
private:
int value = 10;
};
class Child : public Base {
public:
int get() {
return value;
}
};看到题先定位访问修饰符——value 是 private,再看继承关系——Child 公有继承 Base。核心判断依据是 C++ 访问规则:private 成员仅在当前类内可见,派生类无论通过何种继承方式都无法直接访问基类的 private 成员。
选项 A 把继承误认为"权限传递",混淆了 protected 与 private 的语义差异;选项 B 看似反直觉,实则考察对访问控制本质的理解——派生类成员函数虽在 Child 内,但访问的是 Base 的私有成员,不在同一作用域。
看到题先定位访问修饰符——value 是 private,再看继承关系——Child 公有继承 Base。核心判断依据是 C++ 访问规则:private 成员仅在当前类内可见,派生类无论通过何种继承方式都无法直接访问基类的 private 成员。
选项 A 把继承误认为"权限传递",混淆了 protected 与 private 的语义差异;选项 B 看似反直觉,实则考察对访问控制本质的理解——派生类成员函数虽在 Child 内,但访问的是 Base 的私有成员,不在同一作用域。
本题考查 GESP 六级 C++ 大纲中"类与对象"模块的访问控制与继承机制。命题人特意用"派生类访问基类私有成员"这一经典陷阱,卡住绝大多数考生对 C++ 访问修饰符作用域的理解——很多人误以为继承就自动获得访问权,却忽略了 private 的本质是"仅当前类可见"。