《面向对象程序设计》第02章在线测试
第一题、单项选择题(每题1分,5道题共5分)
1、假定AB为一个类,则执行 “AB r1=r2;”语句时将自动调用该类的( D)。
A、无参构造函数 B、带参构造函数
C、赋值重载函数 D、拷贝构造函数
2、一段程序的定义如下,在函数f()中将动态对象的成员n的值改为34的语句应该为 (C ) class A { int n; public: setn(int nl) {n=nl;} A(int x) {n = x; } } int f() {A * ptr = new A(45);... }
A、A.n=34; B、ptr.setn(34);
C、ptr->setn(34); D、setn(34);
3、假定AB为一个类,则执行“AB p=new AB(1,2);”语句时共调用该类构造函数的次数为(B )。
A、0 B、1
C、2 D、3
4、假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为(C )。
A、0 B、1
C、n D、n+1
5、假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为( B)。
A、abc B、this
C、this D、this&
第二题、多项选择题(每题2分,5道题共10分)
1、定义析构函数时,错误的说法是 (BD) 。
A、其名与类名完全相同
B、返回类型是 void 类型
C、无形参,也不可重载
D、函数体中必须有 delete 语句
2、假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的语句错误的是(ABC)。
A、x.a
B、x.a()
C、x->GetValue()
D、x.GetValue()
3、下面关于构造函数的说法正确的是(AB)
A、构造函数的函数名与类名相同
B、构造函数可以重载
C、构造函数不可以设置默认参数
D、构造函数必须指定类型说明
4、下面关于成员函数的说法错误的是(ACD)
A、类定义中只能说明函数成员的函数头,不能定义函数体
B、类中的函数成员可以在类体中定义,也可以在类体之外定义
C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D、在类体之外定义的函数成员不能操作该类的私有数据成员
5、假定AB为一个类,则执行 “AB *s=new AB(a,5);”语句的结果是(BCD)
A、动态生成对象AB赋值给变量s
B、动态生成对象s
C、如果对象AB中有公有成员a,则s->a可以访问该成员
D、动态生成对象AB,该对象的地址赋值给变量s
第三题、判断题(每题1分,5道题共5分)
1、 若Sample类中的一个成员函数说明如下: Void set(Sample &a) 其中Sample &a表示的含义是.a是类Sample的对象引用,用来作函数Set()的形参。 T
正确 错误
2、 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为x->a。 F
正确 错误
3、 静态成员函数允许访问类的数据成员。T
正确 错误
4、 建立类的对象时,先调用各个对象成员的构造函数,初始化相应的对象成员,然后才执行类的构造函数,初始化类中其他成员。T
正确 错误
5、 this是一个隐含于每一个类的成员函数的特殊指针,它是一个指向正在被某个成员函数操作的对象的指针。T
正确 错误