林老师 · 客观题题库 · CSP-S 学习卷 L01 · 类与对象

CSP-S 学习卷 L01 · 类与对象

提高级语言 · 类/对象/封装/构造析构/继承多态/运算符重载
真题
复刻
试卷编号LEARN-S-01
题目总数94 题 · 94 分
试卷类型客观题
考生须知:
① 本卷共 4 大部分,合计 94 题 · 94 分,全部为客观题;
② 试卷右上角设有 「提交答卷」 与 「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 94 分
0
答 对 · 得 0 分
0
答 错 · 失 0 分
当前筛选下没有题目
壹

壹 概念建立 · 面向对象基础

27 QUESTIONS · 1 POINT EACH
第 1 题 单选 未作答

面向对象编程(OOP)与面向过程编程的主要区别是?

(1 分)
原创复习题 | 考点:面向对象 vs 面向过程
第 2 题 单选 未作答

面向对象中,一个「对象」由哪两部分组成?

(1 分)
原创复习题 | 考点:对象的三要素
第 3 题 单选 未作答

「类(class)」与「对象(object)」的关系是?

(1 分)
原创复习题 | 考点:类与对象的关系
第 4 题 单选 未作答

C++ 中 struct 和 class 的关系是?

(1 分)
原创复习题 | 考点:C++ 中 struct 与 class
第 5 题 单选 未作答

class 中未写访问说明符的成员,默认访问级别是?

(1 分)
原创复习题 | 考点:默认访问级别
第 6 题 单选 未作答

成员声明为 public,意味着?

(1 分)
原创复习题 | 考点:public 的作用
第 7 题 单选 未作答

把数据成员设为 private 的好处是?

(1 分)
原创复习题 | 考点:private 的意义
第 8 题 单选 未作答

protected 成员可以被谁访问?

(1 分)
原创复习题 | 考点:protected 的访问范围
第 9 题 单选 未作答

构造函数(constructor)的作用是?

(1 分)
原创复习题 | 考点:构造函数的作用
第 10 题 单选 未作答

类没有定义任何构造函数时,编译器会?

(1 分)
原创复习题 | 考点:默认构造函数
第 11 题 单选 未作答

类定义了带参构造函数(如 A(int x))后,还能 A a; 吗?

(1 分)
原创复习题 | 考点:定义带参构造后
第 12 题 单选 未作答

析构函数(destructor)在什么时候调用?

(1 分)
原创复习题 | 考点:析构函数
第 13 题 单选 未作答

成员函数中的 this 指的是?

(1 分)
原创复习题 | 考点:this 指针
第 14 题 单选 未作答

成员函数参数与成员同名时(如 void set(int score)),用 this 区分:this->score = score;。这是?

(1 分)
原创复习题 | 考点:this 的典型用途
第 15 题 单选 未作答

对象指针 Student* p 访问成员用?普通对象 Student a 用?

(1 分)
原创复习题 | 考点:成员访问 . 与 ->
第 16 题 单选 未作答

封装(encapsulation)通常的做法是?

(1 分)
原创复习题 | 考点:封装的三步
第 17 题 单选 未作答

派生类继承基类的语法是?

(1 分)
原创复习题 | 考点:继承的语法
第 18 题 单选 未作答

继承的主要好处是?

(1 分)
原创复习题 | 考点:继承的好处
第 19 题 单选 未作答

多态(polymorphism)指的是?

(1 分)
原创复习题 | 考点:多态的定义
第 20 题 单选 未作答

C++ 实现多态,基类中需要把函数声明为?

(1 分)
原创复习题 | 考点:虚函数
第 21 题 单选 未作答

C++ 中重载 + 运算符(a + b)的写法是?

(1 分)
原创复习题 | 考点:运算符重载
第 22 题 单选 未作答

构造函数初始化列表 A(int x): m(x) {} 的作用是?

(1 分)
原创复习题 | 考点:初始化列表
第 23 题 单选 未作答

explicit A(int x); 的作用是?

(1 分)
原创复习题 | 考点:explicit 关键字
第 24 题 单选 未作答

类含指针成员,默认拷贝构造函数做的是?

(1 分)
原创复习题 | 考点:浅拷贝
第 25 题 单选 未作答

需要「深拷贝」时(指针成员),做法是?

(1 分)
原创复习题 | 考点:深拷贝
第 26 题 单选 未作答

面向对象编程的三大特性是?

(1 分)
原创复习题 | 考点:面向对象三原则
第 27 题 单选 未作答

下列哪种语言不是面向对象程序设计语言?

(1 分)
原创复习题 | 考点:OOP 语言识别
贰

贰 模板与代码 · 类定义与追踪

20 QUESTIONS · 1 POINT EACH
第 28 题 单选 未作答

运行下面代码,输出是?

01class Student {
02public:
03    string name; int score;
04    Student(string n, int s): name(n), score(s) {}
05    void show() { cout << name << ' ' << score; }
06};
07int main(){ Student a("Tom",90); a.show(); }

(1 分)
原创复习题 | 考点:模板代码:基础类定义
第 29 题 单选 未作答

下面代码会怎样?

01class A { private: int x; };
02int main(){ A a; a.x = 5; }

(1 分)
原创复习题 | 考点:模板代码:private 访问限制
第 30 题 单选 未作答

class B 中 x 声明在 public 区,B b; b.x = 5; 结果?

(1 分)
原创复习题 | 考点:模板代码:public 成员访问
第 31 题 单选 未作答

运行下面代码,输出是?

01class C {
02    int n;
03public:
04    C(): n(0) {}
05    C& add(int x) { n += x; return *this; }
06    int get() { return n; }
07};
08int main(){ C c; c.add(1).add(2).add(3); cout << c.get(); }

(1 分)
原创复习题 | 考点:模板代码:this 链式调用
第 32 题 单选 未作答

运行下面代码,输出顺序是?

01class D {
02public:
03    D() { cout << "C"; }
04    ~D() { cout << "D"; }
05};
06int main(){ D d; cout << "M"; }

(1 分)
原创复习题 | 考点:模板代码:构造与输出顺序
第 33 题 单选 未作答

下面代码,析构函数调用几次?

01class E { public: ~E() { cout << "~"; } };
02int main(){ E a; { E b; } E c; }

(1 分)
原创复习题 | 考点:模板代码:局部对象析构时机
第 34 题 单选 未作答

下面代码会怎样?

01class F { public: int x; };
02int main(){ F* p = new F; p->x = 5; cout << p->x; delete p; }

(1 分)
原创复习题 | 考点:模板代码:new 对象与 delete
第 35 题 单选 未作答

类含 int* p(new 的数组),正确做法是?

(1 分)
原创复习题 | 考点:模板代码:析构释放内存
第 36 题 单选 未作答

运行下面代码,输出是?

01class Shape { public: virtual double area() const { return 0; } };
02class Circle : public Shape {
03    double r;
04public:
05    Circle(double x): r(x) {}
06    double area() const override { return 3.14 * r * r; }
07};
08int main(){ Shape* s = new Circle(2); cout << s->area(); delete s; }

(1 分)
原创复习题 | 考点:模板代码:多态 area
第 37 题 单选 未作答

若上题 area 去掉 virtual,s->area() 输出?

(1 分)
原创复习题 | 考点:模板代码:非虚函数无多态
第 38 题 单选 未作答

运行下面代码,输出是?

01class Vec { public: int x,y;
02  Vec(int a,int b): x(a),y(b) {}
03  Vec operator+(const Vec& o) const { return Vec(x+o.x, y+o.y); }
04};
05int main(){ Vec a(1,2), b(3,4); Vec c = a + b; cout << c.x << ',' << c.y; }

(1 分)
原创复习题 | 考点:模板代码:运算符重载相加
第 39 题 单选 未作答

成员是 const int c;,构造函数必须用?

(1 分)
原创复习题 | 考点:模板代码:初始化列表必须场景
第 40 题 单选 未作答

class A { public: explicit A(int x){} }; 下面哪个会编译错误?

(1 分)
原创复习题 | 考点:模板代码:explicit 阻止隐式转换
第 41 题 单选 未作答

含指针成员的类,Arr b = a;(默认拷贝构造)后 b.p 与 a.p?

(1 分)
原创复习题 | 考点:模板代码:深浅拷贝
第 42 题 单选 未作答

class G { public: static int count; }; static 成员 count 的特点是?

(1 分)
原创复习题 | 考点:模板代码:静态成员
第 43 题 单选 未作答

int get() const { return n; } 中 const 的作用是?

(1 分)
原创复习题 | 考点:模板代码:const 成员函数
第 44 题 单选 未作答

派生类对象创建时,构造执行顺序是?

(1 分)
原创复习题 | 考点:模板代码:构造顺序(继承)
第 45 题 单选 未作答

基类析构函数应声明为 virtual(virtual ~Shape(){}),因为?

(1 分)
原创复习题 | 考点:模板代码:虚析构
第 46 题 单选 未作答

Student a[3]; 要求 Student 类?

(1 分)
原创复习题 | 考点:模板代码:对象数组
第 47 题 单选 未作答

类外定义成员函数 void X::f() {},X:: 的作用是?

(1 分)
原创复习题 | 考点:模板代码:成员函数类外定义
叁

叁 应用与变体 · GESP 考法仿写与深挖

24 QUESTIONS · 1 POINT EACH
第 48 题 单选 未作答

运行下面代码,说法正确的是?

01class Node {
02public:
03    int val; Node* next;
04    Node(int v, Node* n = nullptr): val(v), next(n) {}
05};
06int main(){ Node a(1), b(2, &a); }

(1 分)
原创复习题 | 考点:GESP 考法:类代码判对错(构造默认参数)
第 49 题 单选 未作答

下面代码,正确的是?

01class List {
02    struct Cell { int v; Cell* next; Cell(int x): v(x), next(nullptr) {} };
03    Cell* head;
04public:
05    List(): head(nullptr) {}
06    void push(int x) { Cell* c = new Cell(x); c->next = head; head = c; }
07};

(1 分)
原创复习题 | 考点:GESP 考法:类代码判对错(链表构造)
第 50 题 单选 未作答

关于 C++ 类的说法,错误的是?

(1 分)
原创复习题 | 考点:GESP 考法:说法错误项
第 51 题 单选 未作答

关于构造函数,正确的是?

(1 分)
原创复习题 | 考点:GESP 考法:默认构造判断
第 52 题 单选 未作答

关于「定义了构造函数,创建对象时的执行顺序」,正确的是?

(1 分)
原创复习题 | 考点:GESP 考法:构造执行顺序
第 53 题 单选 未作答

把 score 设为 private 并提供 setScore(int s),好处是?

(1 分)
原创复习题 | 考点:深挖:为什么 private 数据更安全
第 54 题 单选 未作答

基类指针 delete 一个派生对象,若基类析构非 virtual,会发生?

(1 分)
原创复习题 | 考点:深挖:为什么需要虚析构
第 55 题 单选 未作答

虚函数多态的底层机制是?

(1 分)
原创复习题 | 考点:深挖:多态的底层(vtable)
第 56 题 单选 未作答

const C c; 对象能调用?

(1 分)
原创复习题 | 考点:深挖:const 对象与 const 成员函数
第 57 题 单选 未作答

static 数据成员(static int count;)必须?

(1 分)
原创复习题 | 考点:深挖:static 成员的初始化
第 58 题 单选 未作答

成员是引用 int& ref;,必须用初始化列表,因为?

(1 分)
原创复习题 | 考点:深挖:初始化列表 vs 函数体赋值
第 59 题 单选 未作答

Vec operator+(const Vec& o) const 末尾 const 保证?

(1 分)
原创复习题 | 考点:深挖:运算符重载的 const
第 60 题 单选 未作答

实现一个计数器类,最合理的封装是?

(1 分)
原创复习题 | 考点:应用:用类封装计数器
第 61 题 单选 未作答

Date(int m) 构造中若 m 非法(如 13)应?

(1 分)
原创复习题 | 考点:应用:类的构造函数校验
第 62 题 单选 未作答

小数据容器(如坐标 {x,y})只想存数据、无封装需求,用?

(1 分)
原创复习题 | 考点:应用:类 vs 结构体选择
第 63 题 单选 未作答

已有 Rectangle(长宽、面积),要加 Square,最合理的是?

(1 分)
原创复习题 | 考点:应用:继承改造代码复用
第 64 题 单选 未作答

多种图形(圆/矩形/三角)都要算面积,统一用基类接口调用,最佳做法?

(1 分)
原创复习题 | 考点:应用:多态实现统一接口
第 65 题 单选 未作答

用类管理文件资源(构造打开、析构关闭),这叫什么?

(1 分)
原创复习题 | 考点:应用:RAII 管理资源
第 66 题 单选 未作答

shared_ptr<A> p(new A); 与裸指针相比的好处是?

(1 分)
原创复习题 | 考点:应用:智能指针(shared_ptr)
第 67 题 单选 未作答

vector<A> v; v.push_back(a);(A 含指针成员、无深拷贝构造)可能?

(1 分)
原创复习题 | 考点:应用:对象拷贝的坑
第 68 题 单选 未作答

C++11 移动构造 A(A&& o) 与拷贝构造 A(const A& o) 的区别是?

(1 分)
原创复习题 | 考点:应用:移动语义(C++11)
第 69 题 单选 未作答

STL 容器存自定义类对象(如 vector<Student>)要求类?

(1 分)
原创复习题 | 考点:应用:类与对象在 STL
第 70 题 单选 未作答

class A { int x; char c; }; 对象大小 sizeof(A) 可能是?

(1 分)
原创复习题 | 考点:深挖:对象内存布局
第 71 题 单选 未作答

class A { virtual void f(); }; 的 sizeof(A) 通常?

(1 分)
原创复习题 | 考点:深挖:含虚函数的对象大小
肆

肆 易错与综合

23 QUESTIONS · 1 POINT EACH
第 72 题 单选 未作答

class A { int x; }; 中 x 外部能访问吗?

(1 分)
原创复习题 | 考点:易错:class 默认 private
第 73 题 单选 未作答

class A { public: A(int x){} }; A a; 会?

(1 分)
原创复习题 | 考点:易错:定义构造后默认构造消失
第 74 题 单选 未作答

类含 new 的指针成员但没写析构,对象销毁时?

(1 分)
原创复习题 | 考点:易错:析构不释放指针泄漏
第 75 题 单选 未作答

含指针成员、默认拷贝构造,Arr b=a; 后两个对象都析构,会?

(1 分)
原创复习题 | 考点:易错:浅拷贝双 delete
第 76 题 单选 未作答

Student* p; 用 p.name 会?

(1 分)
原创复习题 | 考点:易错:`.` vs `->` 混用
第 77 题 单选 未作答

成员函数 void set(int x){ x = x; }(没写 this)结果是?

(1 分)
原创复习题 | 考点:易错:this 混淆
第 78 题 单选 未作答

派生对象销毁时,析构顺序是?

(1 分)
原创复习题 | 考点:易错:析构顺序(继承)
第 79 题 单选 未作答

const A a; a.set(1);(set 非 const)会?

(1 分)
原创复习题 | 考点:易错:const 对象调非 const 函数
第 80 题 单选 未作答

A a1,a2; 两个对象访问 static 成员 count?

(1 分)
原创复习题 | 考点:易错:static 成员误解
第 81 题 单选 未作答

重载 operator+ 时返回类型应为?

(1 分)
原创复习题 | 考点:易错:运算符重载语义
第 82 题 单选 未作答

派生类能访问基类的?

(1 分)
原创复习题 | 考点:易错:继承访问
第 83 题 单选 未作答

struct A { private: int x; }; x 是?

(1 分)
原创复习题 | 考点:易错:struct 默认 public 陷阱
第 84 题 单选 未作答

explicit A(int) 后 A a(5) 和 A a = A(5) ?

(1 分)
原创复习题 | 考点:易错:explicit 只防隐式
第 85 题 单选 未作答

运行下面代码,输出是?

01class A {
02    int v;
03public:
04    A(int x): v(x) {}
05    A operator+(const A& o) const { return A(v + o.v); }
06    int get() const { return v; }
07};
08int main(){ A a(2), b(3); A c = a + b + a; cout << c.get(); }

(1 分)
原创复习题 | 考点:综合:完整类代码追踪
第 86 题 单选 未作答

下面代码输出几次「X」?(构造和析构各输出 X)

01class X {
02public:
03    X() { cout << "X"; }
04    X(const X&) { cout << "X"; }
05    ~X() { cout << "X"; }
06};
07X f(X a) { return a; }
08int main(){ X x; f(x); }

(1 分)
原创复习题 | 考点:综合:构造与析构计数
第 87 题 单选 未作答

运行下面代码,输出?

01class Shape { public: virtual double area() const { return 0; } };
02class Rect : public Shape { double w,h; public: Rect(double a,double b): w(a),h(b){} double area() const override { return w*h; } };
03int main(){ Shape* s = new Rect(3,4); cout << s->area(); delete s; }

(1 分)
原创复习题 | 考点:综合:继承 + 多态面积
第 88 题 单选 未作答

class A { public: A(int x){} }; A arr[3]; 会?

(1 分)
原创复习题 | 考点:综合:缺默认构造的数组
第 89 题 单选 未作答

把构造函数设为 private,作用是?

(1 分)
原创复习题 | 考点:综合:private 构造函数
第 90 题 单选 未作答

函数 void f(A a)(按值传对象)会?

(1 分)
原创复习题 | 考点:综合:对象作为参数
第 91 题 单选 未作答

A& f(A& a){ return a; } 返回引用,好处是?

(1 分)
原创复习题 | 考点:综合:返回对象引用
第 92 题 单选 未作答

C++ string 本质是?

(1 分)
原创复习题 | 考点:综合:string 类内部
第 93 题 单选 未作答

vector 相比裸数组的封装优势是?

(1 分)
原创复习题 | 考点:综合:vector 封装
第 94 题 单选 未作答

「通过统一的接口调用不同实现」体现 OOP 的哪个特性?

(1 分)
原创复习题 | 考点:综合:OOP 特性判断