文档详情

C++面向对象程序设计模拟试题4讲诉.doc

发布:2017-01-08约8.31千字共12页下载文档
文本预览下载声明
C++面向对象程序设计模拟试题四 一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 *1.下列关于C++函数的说明中,正确的是( c )。 A)内联函数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是return语句 C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型 D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 2.假定MyCIass为一个类,那么下列的函数说明中,( c )为该类的无参构造函数。 A)void MyClass(); B)~MyClass(int n); C)MyClass( ); D)~MyClass( ); 3.下列叙述中,错误的是( c )。 A)派生类可以使用private派生 B)对基类成员的访问必须是无二义性的 C)基类成员的访问能力在派生类中维持不变 D)赋值兼容规则也适用于多继承的组合 *4.当一个类的某个函数被说明为virtual时,与这个函数的原型相同的函数在该类及其所有派生类中( a ) 。 A)都是虚函数 B)只有被重新说明为vittual时才是虚函数 C)都不是虚函数 D)上面都不正确 5.派生类的构造函数的成员初始化表中,不能包含( c )。 A)基类的构造函数 B)派生类中子对象的初始化 C)基类中子对象的初始化 D)派生类中一般数据成员的初始化 6.下列是重载加法运算符的函数原型声明,其中错误的是( a )。 A)MyClass operator+(double,double); B)MyClass operator+(double,MyClass); C)MyClass operator+(MyClass,double); D)MyClass operator+(MyClass,MyClass); 7.派生类中的成员不能直接访问基类中的( b )成员。 A)public B)private C)virtual D)protected 8.实现运行时的多态性要使用( d )。 A)重载函数 B)析构函数 C)构造函数 D)虚函数 *9.如果在类MyClass外面的非成员函数中使用了函数调用MyClass::f();则函数f()是类MyClass的( a )。 A)静态成员函数 B)非静态成员函数 C)友元函数 D)前面都不正确 10.由于常对象不能被更新,因此C++标准中规定( a )。 A)通过常对象只能调用它的常成员函数 B)通过常对象只能调用静态成员函数 C)常对象的成员都是常成员 D)通过常对象可以调用任何不改变对象值的成员函数 二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。 1.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用_____基类_____的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。 2.声明类模板应使用关键字( template )。 3.重载下标运算符“[]”的函数名为( operator[] )。 3.重载运算符使用的关键字是( operator )。 4.在面向对象方法中,类的实例称为( 对象 )。 5.在类的对象被释放时,( 析构 )函数会被自动调用。 三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。 1.阅读下面程序,写出输出结果。 #include iostream using namespace std; class A { public: virtual void Show() const { cout Class A endl; } }; class B: public A { public: void Show() const { cout Class B endl; } }; void Show(const A obj) { obj.Show(); } int main() { A a; B b; Show(a); Show(b); A *p; p = a; p-Show(); p = b; p-Show(); B *q; q = b; q-Show(); re
显示全部
相似文档