#3689. C++类机制(构造/析构/友元/静态/模板)(客观练习 29 题)

    ID: 3689 Type: Objective Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>C++类机制(构造/析构/友元/静态/模板)

C++类机制(构造/析构/友元/静态/模板)(客观练习 29 题)

  1. 面向对象编程的主要特征不包括( )。

{{ select(1) }}

  • 封装
  • 继承
  • 多态
  • 模块化
  1. 在 C++ 中,下列关于构造函数的描述正确的是( )。

{{ select(2) }}

  • 构造函数可以被声明为虚函数
  • 构造函数不能被声明为虚函数
  • 构造函数可以有返回值
  • 构造函数必须显式调用
  1. 下列 C++ 代码关于静态成员的访问,正确的是( )。

{{ select(3) }}

  • 只能通过类名访问
  • 只能通过对象名访问
  • 两者均可
  • 静态成员不能访问
  1. 关于 C++ 中类的描述,正确的是( )。

{{ select(4) }}

  • 如果类没有用户声明的构造函数,编译器会隐式声明一个默认构造函数
  • 类的析构函数可以被重载,一个类可以有多个析构函数
  • 类中的所有成员都必须声明为 public
  • 类和结构体在 C++ 中没有区别,包括默认访问权限也相同
  1. 在 C++ 中,如果一个类没有定义任何构造函数,编译器( )。

{{ select(5) }}

  • 会生成一个默认的无参构造函数
  • 不会生成任何构造函数
  • 只生成拷贝构造函数
  • 会生成一个带参构造函数
  1. 在 C++ 中,对类的成员变量进行“数据隐藏”通常是通过( )实现。

{{ select(6) }}

  • public
  • private
  • virtual
  • static
  1. 在 C++ 中,关于虚析构函数的说法正确的是( )。

{{ select(7) }}

  • 只有基类的析构函数必须声明为虚函数
  • 所有类的析构函数必须声明为虚函数
  • 虚析构函数确保了通过基类指针删除派生类对象时,会调用派生类的析构函数
  • 虚析构函数会导致内存泄露
  1. 在 C++ 中,下列关于构造函数的说法正确的是( )。

{{ select(8) }}

  • 构造函数可以有返回值类型
  • 构造函数必须与类名相同
  • 一个类只能有一个构造函数
  • 构造函数可以被继承
  1. 下列关于 C++ 中 const 成员函数的说法,正确的是( )。

{{ select(9) }}

  • const 成员函数不能修改任何成员变量
  • const 成员函数可以修改 mutable 成员变量
  • const 对象只能调用 const 成员函数
  • 以上都对
  1. 在 C++ 中,下列关于静态成员函数的说法,正确的是( )。

{{ select(10) }}

  • 静态成员函数可以访问非静态成员变量
  • 静态成员函数可以通过 this 指针调用
  • 静态成员函数可以不通过对象直接调用
  • 静态成员函数必须是 public 的
  1. 在 C++ 中,关于构造函数的初始化列表,下列说法正确的是( )。

{{ select(11) }}

  • 必须在构造函数体内赋值
  • 主要用于初始化 const 成员变量和引用成员变量
  • 使用初始化列表没有性能优势
  • 初始化列表的初始化顺序与列表顺序一致
  1. 下列代码中,可能会导致编译错误的是( )。 class Pet { public: Pet(string n, int a) : name(n), age(a) {} string getName() { return name; } private: string name; int age; }; int main() { Pet cat("奶茶", 2); cout << cat.getName(); cat.name = "大橘"; cout << cat.getName(); }

{{ select(12) }}

  • 第①行
  • 第②行
  • 第③行
  • 第④行
  1. 下列关于 C++ 中“友元”的说法,正确的是( )。

{{ select(13) }}

  • 友元函数可以访问类的私有成员
  • 友元函数是类的成员函数
  • 友元关系可以被继承
  • 一个函数不能同时是多个类的友元
  1. 在 C++ 中,若要创建一个对象并使其在堆上分配内存,应该使用( )。

{{ select(14) }}

  • malloc
  • new
  • alloc
  • create
  1. 在 C++ 中,关于析构函数的说法,正确的是( )。

{{ select(15) }}

  • 析构函数可以有参数
  • 析构函数可以被重载
  • 析构函数在对象销毁时自动调用
  • 析构函数必须显式调用
  1. 关于 C++ 中默认构造函数,下列说法正确的是( )。

{{ select(16) }}

  • 如果用户定义了任何构造函数,编译器就不再生成默认构造函数
  • 每个类都必须有默认构造函数
  • 默认构造函数不能有参数
  • 默认构造函数只能由编译器生成
  1. 在 C++ 中,下列哪一种访问说明符允许类成员在任何位置被访问( )。

{{ select(17) }}

  • private
  • protected
  • public
  • 默认访问说明符
  1. 在 C++ 中,关于静态成员,下列哪些说法是正确的?( )

{{ multiselect(18) }}

  • 静态成员变量属于类,不属于某个具体对象
  • 静态成员函数不能访问非静态成员变量
  • 静态成员变量必须在类外进行初始化
  • 静态成员函数可以使用 this 指针
  1. 下列哪些是 C++ 面向对象编程的三大特性?( )

{{ multiselect(19) }}

  • 封装
  • 继承
  • 多态
  • 抽象
  1. 在 C++ 中,关于构造函数的初始化列表,下列哪些说法是正确的?( )

{{ multiselect(20) }}

  • 可以初始化 const 成员变量
  • 可以初始化引用成员变量
  • 执行顺序由成员在类中的声明顺序决定
  • 执行顺序由初始化列表中的顺序决定
  1. 关于 C++ 中的类,下列哪些说法是正确的?( )

{{ multiselect(21) }}

  • 类是一种用户自定义的数据类型
  • 类中可以包含数据成员和函数成员
  • 类可以实例化出对象
  • 类的成员默认是 public 的
  1. 在 C++ 中,关于派生类构造函数的调用顺序,下列哪些说法是正确的?( )

{{ multiselect(22) }}

  • 先调用基类构造函数
  • 再调用成员对象的构造函数
  • 最后执行派生类构造函数体
  • 调用顺序与继承顺序无关
  1. 在 C++ 中,关于模板(template),下列说法正确的有( )。

{{ multiselect(23) }}

  • 函数模板允许编写泛型函数
  • 类模板允许编写泛型类
  • 模板在编译时实例化
  • 模板支持多种数据类型
  1. 关于 C++ 中的友元函数,下列说法正确的有( )。

{{ multiselect(24) }}

  • 友元函数可以访问类的私有成员
  • 友元函数不是类的成员函数
  • 友元关系不能被继承
  • 友元函数可以通过对象调用
  1. 构造函数可以被声明为 virtual。( )

{{ select(25) }}

  • 正确
  • 错误
  1. 执行下列代码,my_dog.name 的最终值是 Charlie。( ) class Dog { public: string name; }; Dog my_dog; my_dog.name = "Buddy"; my_dog.name = "Charlie";

{{ select(26) }}

  • 正确
  • 错误
  1. C++ 代码中,子类 Child 的实例可以通过其成员函数访问父类 Parent 的私有属性 value。( )

{{ select(27) }}

  • 正确
  • 错误
  1. 类中的静态成员函数可以直接访问类的非静态成员变量。( )

{{ select(28) }}

  • 正确
  • 错误
  1. C++ 中,如果一个类没有定义任何构造函数,编译器会生成一个默认的无参构造函数。( )

{{ select(29) }}

  • 正确
  • 错误