[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷8及答案与解析.doc
《[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷8及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷8及答案与解析.doc(27页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C+机试(继承和派生)模拟试卷 8及答案与解析 一、选择题 1 有如下类定义: class AA int a: public: AA(intn=0): a(n) ; class BB: public AA public: BB(int n)_ ; 其中横线处缺失部分是 ( )。 ( A): a(n) ( B): AA(n) ( C) a(n); ( D) a=n; 2 有如下程序 : #inc1ude iostream using namespace std; class Basel public: Basel(int d) cout d; Basel() ; class Base2
2、 public: Base2(int d) cout d; Base2() ; class Derived: public Basel, Base2 public: Derived (int a, int b, int c, int d); Basel(b), Base2(a), bl(d), b2(c) Private: int b1; int b2; ; int main() Derived d(1, 2, 3, 4); retum 0; 运行时的输出结果是 ( )。 ( A) 1234 ( B) 2134 ( C) 12 ( D) 21 3 已知基类 Employee只有一个构造函数,其
3、定义如下: Employee: Employee(int n): id(n) Manager是 Employee的派生类,则下列对 Manager的构造函数的定义中,正确的是 ( )。 ( A) Manager: Manager(intn): id(n) ( B) Manager: Manager(int n) id=n; ( C) Manager: Manager(int n): Employee(n) ( D) Manager: : Manager(int n) Employee(n); 4 有如下程序: #inc1ude iostream using namespace std; cla
4、ss A public: A()cout A; A()cout C; ; class B: public A public: B()cout G; B()cout T; ; int main() B obj; return 0; 运行这个程序的输出结果是 ( )。 ( A) GATC ( B) AGTC ( C) GACT ( D) AGCT 5 有如下程序: #inc1ude iostream using namespace std; class Base public: void fun() cout B; ; class Derived: public Base public: void
5、 fun()_cout D; ; int main() Derived d; d fun(); return 0; 若程序的输出结果是 BD,则划线处缺失的部分是 ( )。 ( A) Fun(); ( B) Base fun(); ( C) Base: fun(); ( D) Base一 fun(); 6 下列关于虚基类的描述中,错误的是 ( )。 ( A)使用虚基类可以消除由多继承产 生的二义性 ( B)构造派生类对象时,虚基类的构造函数只被调用一次 ( C)声明 “class B: virtual publicA”说明类 B为虚基类 ( D)建立派生类对象时,首先调用虚基类的构造函数 7
6、有如下程序: #inc1ude iostream using namespace std; class Mountain int height; public: Mountain (int h=0): height(h) virtual char* GetName() constreturn“山 “; int GetHeight() constreturn height; ; class Lushan: public Mountain Public: Lushan(int d): Mountain(d) Char*GetName() constreturn“庐山 “; ; int main()
7、 Mountain *p=new Lushan(1000); cout p一 GetName() “海拔 “ p一 GetHeight() “米 “; return 0; 运行这个程序的输出结果是 ( )。 ( A)庐山海拔 1000米 ( B)庐山海拔 0米 ( C)山海拔 1000米 ( D)山海拔 0米 8 在 C+中,用于实现运行时多态性的是 ( )。 ( A)内联函数 ( B)重载函数 ( C)模板函数 ( D)虚函数 9 下列关于虚函数的说明中,正确的是 ( )。 ( A)从虚基类继承的函数都是虚函数 ( B)虚函数不得是静态成员函数 ( C)只能通过指针或引用调用虚函数 ( D)
8、抽象类中的成员函数都是虚函数 10 有如下程序: #inc1ude iostream using namespace std; class Base public: void funl()cout “Basen“; virtual void fun2()cout “Basen“; ; class Derived: public Base public: void funl()cout “Derivedn“; void fun2()cout “Derivedn“; ; void f(Base&b)b funl(); b fun2(); int main() Derived obj; f(obj)
9、; return 0; 执行这个程序的输出结果是 ( )。 ( A) Base ( B) Base Base Derived ( C) Derived ( D) Derived Base Derived 11 有如下程序 #inc1ude iostream using namespace std; class A public: virtual void func1()cout “A1“; void func2() cout “A2“; ; class B: public A public: void func1()cout “B1“; void func2()cout “B2“; ; int
10、 main() A *p=new B; p一 func1(); p一 func2(); return 0: 运行此程序,屏幕上将显示输出 ( )。 ( A) BIB2 ( B) AIA2 ( C) BIA2 ( D) AIB2 12 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。 有如下程序,没有使用多态机制。 #inc1ude iostream using namespace std; class Base int a, b; public: Base (int x, int y)a=x; b=y; ) void show()cout a , b
11、 endl; ) ; class Derived: public Base int c, d; public: Derived (int x, int y, int z, int m): Base(x, y)c=z; d=m; ) void show()cout c , d endl; ) ; int main() Base B1(50, 50), *pb; Derived D1(10, 20, 30, 40); pb=&D1; return 0: return(); 运行时输出的结果是 ( )。 ( A) 10, 20 ( B) 30, 40 ( C) 20, 30 ( D) 50, 50
12、13 虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。有如下程序: #inc1ude iostream using namespace std; class Base public: virtual void f()cout “f0+“; void g()cout “g0+“; ; class Derived: public Base public: void go cout, “g+“; ; int main Derived d; Base *p=&d; return 0; 运行时输出的结
13、果是 ( ) 。 ( A) f+g+ ( B) f0+g+ ( C) f+g0+ ( D) f0+g0+ 14 有如 下程序: #inc1ude iostream using namespace std; class Base public: void output() cout l; virtual void Print() cout B; ; class Derived: public Base public: void output() cout 2; void Print() cout D; ; int main() Base *ptr=new Derived; ptr一 output
14、(); ptr一 Print(); delete ptr; return 0; 程序的输出结果是 ( ) 。 ( A) 1B ( B) 1D ( C) 2B ( D) 2D 15 有如下程序; #inc1ude iostream using namespace std; class B public: virtual void show() cout “B“; ; class D: public B public: void show() cout “D“; void funl(B *ptr) ptr一 show(); void fun2(B &ref) ref show(); void fu
15、n3(B b) b show(); int main() B b, *p=new D; D d; funl(p); fun2(b); fun3(d); return 0; 程序的输出结果是 ( )。 ( A) BBB ( B) BBD ( C) DBB ( D) DBD 16 下列有关抽象类和纯虚函数的叙述中,错误的是 ( )。 ( A)拥有纯虚函数的类是抽象类,不能用来定义对象 ( B)抽象类的派生类若不实现纯虚函数,它也是抽象类 ( C)纯虚 函数的声明以 “=0; ”结束 ( D)纯虚函数都不能有函数体 17 有如下程序: #inc1ude iostream using namespac
16、e std; class GA public; virtual int f() retum l; ; class GB: public GA public; virtual int f() retum 2; ; void show(GA g)cout g f(); void display(GA &g) cout g f(); int main() GA a: show(a); display(a); GB b: show(b); display(b); retum 0; 运行时的输出结果是 ( )。 ( A) 1111 ( B) 1211 ( C) 1112 ( D) 1212 18 下列选
17、项中,与实现运行时多态性无关的是 ( )。 ( A)重载函数 ( B)虚函数 ( C)指针 ( D)引用 19 在一个抽象类中,一定包含有 ( )。 ( A)虚函数 ( B)纯虚函数 ( C)模板函数 ( D)重载函数 20 有如下程序: #inc1ude iostream using namespace std; class A public: virtual void f() cout 1, void g()cout 2; ; class B: public A public: virtual void f()cout 3; void g()cout 4; ; void show(A &a
18、)a f(); a g(); int main() B b; show(b); retum0; 运行时的输出结果是 ( )。 ( A) 12 ( B) 34 ( C) 14 ( D) 32 21 有如下程序: #inc1ude iostream using namespace std; class Publication出版物类 char name30; public: Publication(char *name=“未知名称 ”) strcpy(this一 name, name); const char*getName()const return name, virtual const ch
19、ar*getType()const return“未知类型 “; ; class Book: public Publication 书类 public: Book(char *name): Publication(name) virtual const char*getType()const return“书 “; ; void showPublication( Publication &p) cout p getType() “: “ p getName() endl; int main() Book book(“精彩人生 “); showPublication(book); return
20、0: 运行时的输出结果是 ( )。 ( A)未知类型:未知名称 ( B)未知类型:精彩人生 ( C)书:未知名称 ( D)书:精彩人生 22 下面是类 shape的定义: class Shape public: Virtual void Draw()=0; ; 下列关于 Shape类的描述中,正确的是 ( )。 ( A)类 Shape是虚基类 ( B)类 Shape是抽象类 ( C)类 Shape中的 Draw函数声明有误 ( D)语句 “Shape s; ”能够建立 Shape的一个对象 s 23 有如下程序: #inc1ude iostream using namespace std; c
21、lass B public: B(int xx): x(xx) +count; x+=10; ) virtual void show() const cout count 一 x endl; ) protected: static int count; private: int x: ; class D: public B public: D(int xx, int yy): B(xx), y(yy) +count; y+=100; virtual void show() const cout count 一 y endl; private: int y; ; int B: count =0;
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 机试 继承 派生 模拟 答案 解析 DOC
