#CSPJ26D12. 2026 年 8 月 CSP-J 初赛 22 日打卡 Day12|面向对象与联合体

2026 年 8 月 CSP-J 初赛 22 日打卡 Day12|面向对象与联合体

Day 12 面向对象与联合体:给数据找个家,或者让它们合租

建议用时:15~25 分钟。请先阅读知识点讲解,再完成下方客观题;直接勾选答案后提交,系统会自动判分。

知识点讲解

Day 12 面向对象与联合体:给数据找个家,或者让它们合租

答案解析

Day 12 面向对象与联合体:给数据找个家,或者让它们合租

客观题(共 10 题)

请在每题下方直接选择答案。判断题选择“正确”或“错误”,全部完成后统一提交。

第 1 题

在 C++ 中,若定义时不写任何访问权限修饰符,struct 与 class 的成员默认访问权限分别是( )。

{{ select(1) }}

  • 都是 public
  • 都是 private
  • struct 是 public,class 是 private
  • struct 是 private,class 是 public

第 2 题

下列关于 C++ 构造函数与析构函数的说法, 错误 的是( )。

{{ select(2) }}

  • 构造函数的函数名必须与类名相同
  • 构造函数的返回值类型必须写成 void
  • 析构函数不能带参数,一个类中只能有一个析构函数
  • 对象被创建时自动调用构造函数,被销毁时自动调用析构函数

第 3 题

【CSP-J 2022 初赛】以下哪种功能没有涉及 C++ 语言的面向对象特性支持( )。

{{ select(3) }}

  • C++ 中调用 printf 函数
  • C++ 中调用用户定义的类成员函数
  • C++ 中构造一个 class 或 struct
  • C++ 中构造来源于同一基类的多个派生类

第 4 题

下列关于面向对象三大特性的说法,正确的是( )。

{{ select(4) }}

  • 封装要求把所有数据成员都写成 public,方便外部直接读写
  • 派生类可以直接访问基类中声明为 private 的成员
  • 一个类最多只能定义一个构造函数
  • 通过基类指针调用虚函数时,运行时会执行派生类重写后的版本

第 5 题

已知 int 占 4 字节、char 占 1 字节、double 占 8 字节。定义 union U { int a; char b; double c; };,则 sizeof(U) 的值是( )。

{{ select(5) }}

  • 4
  • 8
  • 13
  • 16

第 6 题

【CSP-J 2023 初赛】阅读下述代码,请问修改 data 的 value 成员以存储 3.14,正确的方式是( )。

union Data {
    int num;
    float value;
    char symbol;
};
union Data data;

{{ select(6) }}

  • data.value = 3.14;
  • value.data = 3.14;
  • data -> value = 3.14;
  • value -> data = 3.14;

第 7 题

沿用第 5 题的字节数假设,定义 struct S { int a; char b; double c; };,则 sizeof(S) 的值是( )。

{{ select(7) }}

  • 8
  • 13
  • 14
  • 16

第 8 题

有定义 enum Color { RED, GREEN = 5, BLUE, WHITE };,则 BLUE 和 WHITE 的值分别是( )。

{{ select(8) }}

  • 1 和 2
  • 2 和 3
  • 6 和 7
  • 5 和 6

第 9 题

在小端序的 64 位 PC 上编译运行第六节给出的程序,其第一行输出是( )。

{{ select(9) }}

  • 1 2 3 4
  • 4 3 2 1
  • 0 0 0 4
  • 1 0 0 0

第 10 题

仍然是第六节的程序,其第二行输出(即 sizeof(Box) 的值)是( )。

{{ select(10) }}

  • 4
  • 5
  • 8
  • 16