#3511. 面向对象真题测试(2509)

面向对象真题测试(2509)

一、单选题(共10题)

1. 2025年09月 第1题

题目:下列关于类的说法,错误的是( ) {{ select(1) }}

  • 构造函数不能声明为虚函数,但析构函数可以。
  • 函数参数如声明为类的引用类型,调用时不会调用该类的复制构造函数。
  • 静态方法属于类而不是某个具体对象,因此推荐用“类名::方法(...)”调用。
  • 不管基类的析构函数是否是虚函数,都可以通过基类指针/引用正确删除派生类对象。

2. 2025年09月 第2题

题目:假设变量 veh 是类 Car 的一个实例,我们可以调用 veh.move(),是因为面向对象编程有( )性质。(注:Car 类继承自 Vehicle 类,move() 是 Vehicle 类的成员函数)

{{ select(2) }}

  • 继承(Inheritance)
  • 封装(Encapsulation)
  • 多态(Polymorphism)
  • 链接(Linking)

3. 2025年09月 第3题

题目:下面代码中 v1 和 v2 调用了相同接口 move(),但输出结果不同,这体现了面向对象编程的( )特性。(注:Vehicle 类的 move() 是虚函数,Car 和 Bike 类重写了 move() 方法,通过 Vehicle 指针调用)

{{ select(3) }}

  • 继承(Inheritance)
  • 封装(Encapsulation)
  • 多态(Polymorphism)
  • 链接(Linking)

4. 2025年06月 第1题

题目:下列哪一项不是面向对象编程的基本特征? {{ select(4) }}

  • 继承
  • 封装
  • 多态
  • 链接

5. 2025年06月 第2题

题目:为了让 Dog 类的构造函数能正确地调用其父类 Animal 的构造方法,横线处应填入( )。

class Animal { 
  public: Animal(std::string str) : name(str) {}
};
class Dog : public Animal {
  public:
  Dog(std::string name, std::string b) : ______, breed(b) {}
};

{{ select(5) }}

  • Animal(name)
  • super(name)
  • Animal::Animal(name)
  • Animal()

6. 2025年03月 第1题

题目:在面向对象编程中,类是一种重要的概念。下面关于类的描述中,不正确的是( )。 {{ select(6) }}

  • 类是一个抽象的概念,用于描述具有相同属性和行为的对象集合。
  • 类可以包含属性和方法,属性用于描述对象的状态,方法用于描述对象的行为。
  • 类可以被实例化,生成具体的对象。
  • 类一旦定义后,其属性和方法不能被修改或扩展。

7. 2024年12月 第1题

题目:面向对象编程(OOP)是一种特殊的程序设计方法。下面( )不是重要的 OOP 特性。 {{ select(7) }}

  • 抽象
  • 封装
  • 继承
  • 模块化

8. 2024年12月 第2题

题目:以下关于 C++ 中类的说法,哪一项是正确的? {{ select(8) }}

  • 类中定义的所有成员变量和成员函数默认是 public 访问权限。
  • 类的构造函数必须显式声明返回类型为 void。
  • 在 C++ 中,类的数据一般设置为私有,其公有成员函数提供访问私有数据的唯一途径。
  • 同一个类的实例有各自的成员数据和成员函数。

9. 2024年09月 第1题

题目:以下( )没有涉及 C++ 语言的面向对象特性支持。 {{ select(9) }}

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

10. 2024年09月 第2题

题目:关于以下 C++ 代码,( )行代码会引起编译错误。

  class Base { 
    private: int a; protected: int b; public: int c; 
  };
  class Derived : public Base {
    public:
    void show() {
    cout << a << endl; // Line1
    cout << b << endl; // Line2
    cout << c << endl; // Line3
  }
};

{{ select(10) }}

  • Line1
  • Line2
  • Line3
  • 没有编译错误

二、判断题(共8题)

11. 2025年09月 第1题 题目:当基类可能被多态使用,其析构函数应该声明为虚函数。 {{ select(11) }}

  • 正确
  • 错误

12. 2025年06月 第1题

题目:构造函数可以被声明为 virtual。 {{ select(12) }}

  • 正确
  • 错误

13. 2024年12月 第1题

题目:构造函数是一种特殊的类成员函数,构造函数的名称和类名相同。但通过函数重载,可以创建多个同名的构造函数,条件是每个构造函数的参数列表不同。 {{ select(13) }}

  • 正确
  • 错误

14. 2024年12月 第2题

题目:类的静态成员函数既能访问类的静态数据成员,也能访问非静态数据成员。 {{ select(14) }}

  • 正确
  • 错误

15. 2024年09月 第1题

题目:C++、Python 和 Java 等都是面向对象的编程语言。 {{ select(15) }}

  • 正确
  • 错误

16. 2024年09月 第2题

题目:在 C++ 中,类的静态成员变量只能被该类对象的成员函数访问。 {{ select(16) }}

  • 正确
  • 错误

17. 2024年09月 第4题

题目:运行以下 C++ 代码,屏幕将输出 “derived class”。

class base {
  public:
  virtual void show() { 
    cout << "base class" << endl; }
  };
  class derived : public base {
  public:
  void show() override { 
    cout << "derived class" << endl; 
  }
};
int main() {
  base b = new derived();
  b->show();
  delete b;
  return 0;
}

{{ select(17) }}

  • 正确
  • 错误

18. 2024年09月 第5题

题目:如下列代码所示的基类(base)及其派生类(derived),则生成一个派生类的对象时,只调用派生类的构造函数。

class base {
  public:
     base() { cout << "base constructor" << endl; }
    ~base() { cout << "base destructor" << endl; }
  };
  class derived : public base {
  public:
  derived() { 
    cout << "derived constructor" << endl; 
  }
  ~derived() { 
    cout << "derived destructor" << endl; 
  }
};

{{ select(18) }}

  • 正确
  • 错误