《C++程序设计》作业5 一、单项选择题(共30小题,60分) 题型得分 56 下列( ),不会调用对象的析构函数。
(2分) A. 将对象指针强行赋值为NULL时 B. 当对象变量脱离其作用域时 C. 函数中定义的动态对象变量当函数执行结束时 D. 用delete删除对象指针时 我的答案: A 题目得分 2 参考答案: A 面向对象程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理。
(2分) A. 对数据的操作 B. 信息 C. 数据隐藏 D. 数据抽象 我的答案: A 题目得分 2 参考答案: A 假设A是一个类的名字,下面的语句生成了几个类A的对象?
A *arr[4] = { new A(), NULL,new A() };
(2分) A. 1 B. 4 C. 2 我的答案: C 题目得分 2 参考答案: C 以下关于类和对象的说法错误的说法是( )。
(2分) A. 类是一种类型,它封装了数据和对数据的操作 B. 对象是类的实例 C. 一个类的对象只有一个 D. 一个对象必属于某个类 我的答案: C 题目得分 2 参考答案: C 假定一个类的成员均为公有成员,构造函数为“A(int aa = 1, int bb = 0) { a = aa; b = bb; }”,则执行“A x(4);”语句后,x.a和x.b的值分别为( )。
(2分) A. 0和4 B. 4和0 C. 1和4 D. 4和1 我的答案: B 题目得分 2 参考答案: B 以下有关类的说法正确的是( )。
(2分) A. 不能指定其成员的权限 B. 不能包含成员函数 C. 其成员的默认访问权限为私有的 D. 不能包含对象成员 我的答案: C 题目得分 2 参考答案: C C++中实现对象抽象与封装性的基本单位是( )。
(2分) A. 类 B. 枚举 C. 数组 D. 函数 我的答案: A 题目得分 2 参考答案: A 以下有关构造函数的说法正确的是( )。
(2分) A. 任一个类必定有构造函数 B. 可定义没有构造函数的类 C. 构造函数不能重载 D. 任一个类必定有缺省的构造函数 我的答案: A 题目得分 2 参考答案: A 有如下两个类定义:
class AA { }; class BB { AA v1, *v2; BB v3; int v4; };
其中有一个成员变量的定义是错误的,这个变量是( )。
(2分) A. v1 B. v2 C. v4 D. v3 我的答案: D 题目得分 2 参考答案: D 以目前所学内容来看,以下( )说法是不对的。
(2分) A. 成员变量每个对象有各自的一份,互相不影响 B. 程序运行期间,一个对象的存储空间内部包含了成员函数的指令 C. 类的成员函数内部可以访问同类的成员变量 我的答案: B 题目得分 2 参考答案: B 有如下程序段,编译运行结果为( )。
#include using namespace std; class A { public: static int a; A() { ++a; } }; int A::a = 0; int main() { cout << A::a << " "; A b; cout << A::a << endl; return 0; }
(2分) A. 编译通过,输出 0 0 B. 编译通过,输出 0 1 C. 编译错误 D. 编译通过,输出 1 1 我的答案: B 题目得分 2 参考答案: B 以下说法错误的是( )。
(2分) A. 成员函数可以定义在类外 B. 成员函数内可以访问类的所有数据成员 C. 必须通过对象调用非静态成员函数 D. 只有成员函数才能访问类的数据成员 我的答案: D 题目得分 2 参考答案: D 下面有一段程序,该段程序的输出结果为( )。
#include using namespace std; class A { public: A() { cout << “1” << " "; } ~A() { cout << “2” << " "; } }; int main() { cout << “3” << " "; A a; cout << “4” << " "; return 0; }
(2分) A. 1 2 3 4 B. 3 1 2 4 C. 3 1 4 2 D. 3 1 4 我的答案: C 题目得分 2 参考答案: C 对于通过new运算符生成的对象,( )。
(2分) A. 在包含该new语句的函数返回时自动析构 B. 在程序结束时自动析构 C. 在执行delete操作时会析构,如果没有执行delete操作,则在程序结束时自动析构 D. 执行delete操作时才能析构 我的答案: D 题目得分 2 参考答案: D 以下对类A的定义,( )是正确的。
(2分) A. class A { int v; public: void Func(); }; A::void Func() { }
B. class A { private: int v; public: void Func() { } }
C. class A { int v; public: A next; void Func() { } };
D. class A { int v; A *next; void Func() { } };
我的答案: B 题目得分 0 参考答案: D 有类A如下定义:
class A { int v; public: A(int n) { v = n; } };
下面哪条语句是编译不会出错的?
(2分) A. A a1(3); B. A a2; C. A *p = new A(); 我的答案: A 题目得分 2 参考答案: A 不属于构造函数特征的是( )。
(2分) A. 构造函数的函数名与类名同名 B. 构造函数可以重载 C. 构造函数可以设置缺省(默认)参数 D. 构造函数必须指定返回类型说明 我的答案: D 题目得分 2 参考答案: D 以下代码段,( )是不正确的。
(2分) A. int main() { class A { int v; }; A a; a.v = 3; return 0; }
B. int main() { class A { public: int v; A *p; }; A a; a.p = new A; delete a.p; return 0; }
C. int main() { class A { public: int v; A *p; }; A a; a.p = &a; return 0; }
D. int main() { class A { public: int v; }; A *p = new A; p->v = 4; delete p; return 0; }
我的答案: A 题目得分 2 参考答案: A 对于类的常量成员函数的描述正确的是( )。
(2分) A. 常量成员函数只能由常量对象调用 B. 常量成员函数不可以对类的静态数据成员进行修改 C. 常量成员函数不改变对象的状态 D. 常量成员函数不能访问类的数据成员 我的答案: B 题目得分 0 参考答案: C 以下( )说法不是构造函数的特征。
(2分) A. 构造函数的函数名与类名相同 B. 构造函数不能重载 C. 构造函数可以设置默认参数 D. 构造函数没有返回值类型 我的答案: B 题目得分 2 参考答案: B 若有如下类A:
class A { public: A(); A(int x); … };
执行语句:A a(4),b[3], *p[2]; 则自动调用类A构造函数的次数是( )。
(2分) A. 6 B. 4 C. 3 D. 1 我的答案: B 题目得分 2 参考答案: B 以下说法正确的是( )。
(2分) A. 每个对象内部都有成员函数的实现代码 B. 一个类的私有成员函数内部不能访问本类的私有成员变量 C. 类的成员函数之间可以互相调用 D. 编写一个类时,至少要写一个成员函数 我的答案: C 题目得分 2 参考答案: C 关于类的对象,说法错误的是( )。
(2分) A. 对象的成员变量可以是其他类的对象 B. 同类的对象间,可以互相赋值 C. 在成员函数中,只能访问成员函数所作用的对象的private成员 D. 释放对象时,相应类的析构函数被自动执行 我的答案: C 题目得分 2 参考答案: C ( )是面向对象的程序设计方法相对结构化程序设计方法的好处。
(2分) A. 程序代码更短 B. 程序更容易调试、修改和扩充 C. 程序运行速度更快 我的答案: B 题目得分 2 参考答案: B 以下说法中正确的是( )。
(2分) A. 一个类只能定义一个构造函数,但可以定义多个析构函数 B. 一个类只能定义一个析构函数,但可以定义多个构造函数 C. 构造函数的返回值类型是void D. 一个类一定会有无参构造函数 我的答案: B 题目得分 2 参考答案: B 在类的外部如何访问该类对象的私有成员?
(2分) A. 不可能的任务 B. 通过调用公有的成员函数能间接访问到私有成员 C. 通过强制类型转换将私有成员转换为公有成员 我的答案: B 题目得分 2 参考答案: B 属于析构函数特征的是( )。
(2分) A. 一个类中只能定义一个析构函数 B. 析构函数名是~ C. 析构函数只能定义在类的体内 D. 析构函数可以有一个或多个参数 我的答案: A 题目得分 2 参考答案: A 关于类的静态成员,说法错误的是( )。
(2分) A. 类的静态成员变量由该类的全部对象共有 B. 在类的静态成员函数中,可以访问该类的静态成员变量 C. 不需要创建类的对象,就可以访问类的静态成员 D. 在类的非静态成员函数中,不可以访问该类的静态成员变量 我的答案: D 题目得分 2 参考答案: D 以下说法正确的是( )。
(2分) A. 类和对象没有区别 B. 要为类和对象分配存储空间 C. 对象是类的实例,为对象分配存储空间而不为类分配存储空间 D. 类是对象的实例,为类分配存储空间而不为对象分配存储空间 我的答案: C 题目得分 2 参考答案: C 以下程序的输出结果是( )。
#include using namespace std; class A { private: int val;= public: A(int x) : val(x) { } void print() const { cout << “const:val=” <<val << " “; } void print() { cout << “val=” << val <<” "; } }; int main() { A a1(1); const A a2(2); a1.print(); a2.print(); return 0; }
(2分) A. val=1 const:val=2 B. const:val=1 const:val=2 C. const:val=1 val=2 D. val=1 val=1 我的答案: A 题目得分 2 参考答案: A 二、填空题(共8小题,16分) 题型得分 16 下列程序的输出结果是________。
#include using namespace std; class C { public: void func() { static int x = 0; cout << ++x; } }; int main() { C c1, c2; c1.func(); c2.func(); c1.func(); return 0; }
(2分) 我的答案: 123 题目得分 2 参考答案: 123 下列程序的输出结果是________。
#include using namespace std; class A { public: A(); ~A(); void display(); private: int x; }; A::A() { cout << “constructor” << “#”; x = 0; } A::~A() { cout << “destructor” << endl; } void A::display() { cout << x << “#”; } int main() { A a; a.display(); return 0; }
(2分) 我的答案: constructor#0#destructor 题目得分 2 参考答案: constructor#0#destructor 对于如下代码,请指出错误的代码行号是________。
1 class A { 2 public: 3 A(int a = 0) { 4 x = a; 5 } 6 static void f1() { 7 x++; 8 } 9 private: 10 int x; 11 static int y; 12 };
(2分) 我的答案: 7 题目得分 2 参考答案: 7 下面是一个类A的定义,请在________处填写合适的内容(如果必要,标识符间只留一个空格,不必要的不留空格)。
class A { private: int x; public: A(int x0); }; ________ { //类A的构造函数的函数头 x = x0; //类A的构造函数的函数体 }
(2分) 我的答案: A::A(int x0) 题目得分 2 参考答案: A::A(int x0) 下列程序的输出结果是________。
#include using namespace std; class C { public: void setX(int i) { x= i; } int getX() { return x; } private: int x; }; int main() { C *p; C a[3]; a[0].setX(5); a[1].setX(6); a[2].setX(7); for(int i = 0; i < 3; ++i) { p = &a[i]; cout << p->getX(); } cout << endl; return 0; }
(2分) 我的答案: 567 题目得分 2 参考答案: 567 以下程序的输出结果是________。
#include using namespace std; class A { public: A(int a1, int a2):a1(a1), a2(a2) { } void print(); void print() const; private: int a1, a2; }; void A::print() { cout << a1 << " "; } void A::print() const { cout << a2 << " "; } int main() { A a(1, 2); const A b(1, 2); a.print(); b.print(); return 0; }
(2分) 我的答案: 1 2 题目得分 2 参考答案: 1 2 如果从键盘上输入120<回车>,下列程序的输出结果是________。
#include #include using namespace std; int main() { double temperature; cin>> temperature; try { if(temperature> 95) throw runtime_error(“Exceptional temperature”); cout << temperature << endl; } catch(runtime_error &ex) { cout << ex.what() << endl; } return0; }
(2分) 我的答案: Exceptional temperature 题目得分 2 参考答案: Exceptional temperature 下列程序的输出结果是________。
#include using namespace std; class Count { public: Count() { count = 1; } Count(int c) { count = c; } int count; }; void increment(Count &c, int ×) { c.count++; times++; } int main() { Count myCount; int times = 0; for(int i = 0; i < 100; ++i) increment(myCount, times); cout << myCount.count << “#” << times << endl; return 0; }
(2分) 我的答案: 101#100 题目得分 2 参考答案: 101#100 单项选择题,第05套,第01题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第02题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第03题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第04题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第05题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第06题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第07题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第08题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第09题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第10题 总分 2 得分 0 详细: 错误 2 0 单项选择题,第05套,第11题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第12题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第13题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第14题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第15题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第16题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第17题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第18题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第19题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第20题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第21题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第22题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第23题 总分 2 得分 0 详细: 错误 2 0 单项选择题,第05套,第24题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第25题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第26题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第27题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第28题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第29题 总分 2 得分 2 详细: 正确 2 2 单项选择题,第05套,第30题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第01题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第02题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第03题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第04题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第05题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第06题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第07题 总分 2 得分 2 详细: 正确 2 2 填空题,第05套,第08题 总分 2 得分 2 详细: 正确 2 2
|