#3689. C++类机制(构造/析构/友元/静态/模板)(客观练习 29 题)
C++类机制(构造/析构/友元/静态/模板)(客观练习 29 题)
- 面向对象编程的主要特征不包括( )。
{{ select(1) }}
- 封装
- 继承
- 多态
- 模块化
- 在 C++ 中,下列关于构造函数的描述正确的是( )。
{{ select(2) }}
- 构造函数可以被声明为虚函数
- 构造函数不能被声明为虚函数
- 构造函数可以有返回值
- 构造函数必须显式调用
- 下列 C++ 代码关于静态成员的访问,正确的是( )。
{{ select(3) }}
- 只能通过类名访问
- 只能通过对象名访问
- 两者均可
- 静态成员不能访问
- 关于 C++ 中类的描述,正确的是( )。
{{ select(4) }}
- 如果类没有用户声明的构造函数,编译器会隐式声明一个默认构造函数
- 类的析构函数可以被重载,一个类可以有多个析构函数
- 类中的所有成员都必须声明为 public
- 类和结构体在 C++ 中没有区别,包括默认访问权限也相同
- 在 C++ 中,如果一个类没有定义任何构造函数,编译器( )。
{{ select(5) }}
- 会生成一个默认的无参构造函数
- 不会生成任何构造函数
- 只生成拷贝构造函数
- 会生成一个带参构造函数
- 在 C++ 中,对类的成员变量进行“数据隐藏”通常是通过( )实现。
{{ select(6) }}
- public
- private
- virtual
- static
- 在 C++ 中,关于虚析构函数的说法正确的是( )。
{{ select(7) }}
- 只有基类的析构函数必须声明为虚函数
- 所有类的析构函数必须声明为虚函数
- 虚析构函数确保了通过基类指针删除派生类对象时,会调用派生类的析构函数
- 虚析构函数会导致内存泄露
- 在 C++ 中,下列关于构造函数的说法正确的是( )。
{{ select(8) }}
- 构造函数可以有返回值类型
- 构造函数必须与类名相同
- 一个类只能有一个构造函数
- 构造函数可以被继承
- 下列关于 C++ 中 const 成员函数的说法,正确的是( )。
{{ select(9) }}
- const 成员函数不能修改任何成员变量
- const 成员函数可以修改 mutable 成员变量
- const 对象只能调用 const 成员函数
- 以上都对
- 在 C++ 中,下列关于静态成员函数的说法,正确的是( )。
{{ select(10) }}
- 静态成员函数可以访问非静态成员变量
- 静态成员函数可以通过 this 指针调用
- 静态成员函数可以不通过对象直接调用
- 静态成员函数必须是 public 的
- 在 C++ 中,关于构造函数的初始化列表,下列说法正确的是( )。
{{ select(11) }}
- 必须在构造函数体内赋值
- 主要用于初始化 const 成员变量和引用成员变量
- 使用初始化列表没有性能优势
- 初始化列表的初始化顺序与列表顺序一致
- 下列代码中,可能会导致编译错误的是( )。 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) }}
- 第①行
- 第②行
- 第③行
- 第④行
- 下列关于 C++ 中“友元”的说法,正确的是( )。
{{ select(13) }}
- 友元函数可以访问类的私有成员
- 友元函数是类的成员函数
- 友元关系可以被继承
- 一个函数不能同时是多个类的友元
- 在 C++ 中,若要创建一个对象并使其在堆上分配内存,应该使用( )。
{{ select(14) }}
- malloc
- new
- alloc
- create
- 在 C++ 中,关于析构函数的说法,正确的是( )。
{{ select(15) }}
- 析构函数可以有参数
- 析构函数可以被重载
- 析构函数在对象销毁时自动调用
- 析构函数必须显式调用
- 关于 C++ 中默认构造函数,下列说法正确的是( )。
{{ select(16) }}
- 如果用户定义了任何构造函数,编译器就不再生成默认构造函数
- 每个类都必须有默认构造函数
- 默认构造函数不能有参数
- 默认构造函数只能由编译器生成
- 在 C++ 中,下列哪一种访问说明符允许类成员在任何位置被访问( )。
{{ select(17) }}
- private
- protected
- public
- 默认访问说明符
- 在 C++ 中,关于静态成员,下列哪些说法是正确的?( )
{{ multiselect(18) }}
- 静态成员变量属于类,不属于某个具体对象
- 静态成员函数不能访问非静态成员变量
- 静态成员变量必须在类外进行初始化
- 静态成员函数可以使用 this 指针
- 下列哪些是 C++ 面向对象编程的三大特性?( )
{{ multiselect(19) }}
- 封装
- 继承
- 多态
- 抽象
- 在 C++ 中,关于构造函数的初始化列表,下列哪些说法是正确的?( )
{{ multiselect(20) }}
- 可以初始化 const 成员变量
- 可以初始化引用成员变量
- 执行顺序由成员在类中的声明顺序决定
- 执行顺序由初始化列表中的顺序决定
- 关于 C++ 中的类,下列哪些说法是正确的?( )
{{ multiselect(21) }}
- 类是一种用户自定义的数据类型
- 类中可以包含数据成员和函数成员
- 类可以实例化出对象
- 类的成员默认是 public 的
- 在 C++ 中,关于派生类构造函数的调用顺序,下列哪些说法是正确的?( )
{{ multiselect(22) }}
- 先调用基类构造函数
- 再调用成员对象的构造函数
- 最后执行派生类构造函数体
- 调用顺序与继承顺序无关
- 在 C++ 中,关于模板(template),下列说法正确的有( )。
{{ multiselect(23) }}
- 函数模板允许编写泛型函数
- 类模板允许编写泛型类
- 模板在编译时实例化
- 模板支持多种数据类型
- 关于 C++ 中的友元函数,下列说法正确的有( )。
{{ multiselect(24) }}
- 友元函数可以访问类的私有成员
- 友元函数不是类的成员函数
- 友元关系不能被继承
- 友元函数可以通过对象调用
- 构造函数可以被声明为 virtual。( )
{{ select(25) }}
- 正确
- 错误
- 执行下列代码,my_dog.name 的最终值是 Charlie。( ) class Dog { public: string name; }; Dog my_dog; my_dog.name = "Buddy"; my_dog.name = "Charlie";
{{ select(26) }}
- 正确
- 错误
- C++ 代码中,子类 Child 的实例可以通过其成员函数访问父类 Parent 的私有属性 value。( )
{{ select(27) }}
- 正确
- 错误
- 类中的静态成员函数可以直接访问类的非静态成员变量。( )
{{ select(28) }}
- 正确
- 错误
- C++ 中,如果一个类没有定义任何构造函数,编译器会生成一个默认的无参构造函数。( )
{{ select(29) }}
- 正确
- 错误