华中科技大学C++程序设计考试试题解析

需积分: 0 2 下载量 68 浏览量 更新于2024-08-05 1 收藏 456KB PDF 举报
"C++试卷2020年答案1,包含单选题、类成员访问权限的考察" 这篇资源是一个关于C++编程语言的考试试卷,主要涵盖了C++的基础概念和特性,包括类的成员访问权限、结构体、联合体、引用、函数声明以及静态与虚函数的使用。试卷分为单选题和填空题两部分。 在单选题部分,我们可以看到以下几个关键知识点: 1. 关于`mutable`关键字:题目中提到,如果一个结构体成员被声明为`mutable`,即使结构体本身是`const`,该成员仍然可以被修改。因此,选项B(`a.x不可被赋值,a.y可被赋值`)是正确的。 2. 联合体(`union`)的性质:联合体内的所有成员共享同一块内存空间,因此它不能作为基类,因为这会导致多态性的问题。选项A(`既不能是基类也不能是派生类`)是正确的。 3. 引用(reference)与函数返回值:`int&f()`表示函数返回一个整型变量的引用,可以被赋值;而`int&&g()`是右值引用,通常用于移动语义,不能直接赋值。所以选项D(`调用f()可被赋值,调用g()不可被赋值`)是正确的。 4. 静态(`static`)与虚(`virtual`)成员函数:静态成员函数属于类本身,而非类的对象,不支持虚函数。因此,选项C(`必须同时使用static和virtual`)是错误的。 5. 函数指针与引用:`char*const&f();`表示函数返回一个常量指针的引用。选项A尝试将一个字符串字面量赋值给这个引用,这是不允许的,因为字符串字面量是常量且不能修改。所以,选项A是错误的。 在填空题部分,题目要求在给定的类`A`和其派生类`B`中识别不同访问权限的成员。这涉及到C++的访问控制规则,即`private`(私有)、`protected`(保护)和`public`(公共)成员的访问权限: - `private`成员只能在类内部访问。 - `protected`成员在类内部和其派生类中都可以访问。 - `public`成员在任何地方都可以访问。 类`A`有以下成员: - 私有成员`a` - 保护成员`b`和`c` - 公有成员`d`和`e` 类`B`继承自`A`,并且使用`protected`访问修饰符,这意味着它能访问`A`的所有保护成员和公共成员。 填空题需要填写类`B`能够访问的成员及其访问权限,这涉及C++的继承和访问控制原则,考生需要正确区分`B`类可以直接访问哪些成员,以及它们的访问级别。这部分试题旨在测试考生对类继承和访问控制的理解程度。