《面向对象程序设计》复习题5
发布时间:2023-12-04 20:12:08浏览次数:24[试题分类]:面向对象程序设计1. 在 C++的面向对象程序设计框架中,程序的基本组成单元是A. 类B. 对象C. 变量D. 函数答案:A2. {有如下语句序列:int x=100,&r=x;cout<<x<<'-'<<r<<endl;已知其中变量 x 的地址为 0012FF7C,则执行该语句序列的输出结果为}A. 0012FF7C-0012FF7CB. 100-0012FF7CC. 0012FF7C-100D. 100-100答案:D3. 设变量 x 和 y 为整型变量,若有函数调用为“fun(&x,&y)”,则下列选项中,能够作为函数 fun 原型声明的是A. void fun(int &a,int &b);B. void fun(int &a,int *b);C. void fun(int *a,int &b);D. void fun(int *a,int *b);答案:D4. 下列关于类和对象的叙述中,错误的是1
A. 类是创建对象的模板B. 一个类只能有一个对象C. 一个对象一定属于某个类D. 对象是状态和操作的封装体答案:B5. 下列关于析构函数的叙述中,正确的是A. 系统不能提供默认的析构函数B. 析构函数必须由用户定义C. 析构函数没有参数D. 析构函数可以设置默认参数答案:C6. {下列函数中,不具有隐含的 this 指针的是class MyClass\{public:int fun1 (); //void fun2 (); //virtual void fun3(); //friend int fun4(); //\};}A. B. C. D. 答案:D7. {2
有如下类定义,obj 是类 D 的对象,下列语句中不违反访问控制权限的是class B \{public: void fun1();private: void fun2();protected: void fun3();\};class D : public B \{protected: void fun4();\};}A. obj.fun1();B. obj.fun2();C. obj.fun3();D. obj.fun4();答案:A8. 在 C++中,能够被派生类继承的函数是A. 析构函数B. 友元函数C. 构造函数D. 成员函数答案:D9. 下列函数中,可以作为虚函数的是A. 构造函数B. 静态函数C. 析构函数D. 非成员函数答案:C3
10. 下列格式控制符中,可以设置输出项域宽的是A. setwB. setfillC. setprecisionD. endl答案:A11. 若有函数声明“void fun(int& x);”,则函数 fun 是按 方式传递参数的。答案:引用12. {请在划线处填写 Point 类的构造函数的定义。class Point \{public: private: int x,y;\};}答案:Point(int xx, int yy):x(xx),y(yy) { }13. 声明类的静态成员时必须使用关键字 。答案:static14. {下列程序运行后输出 10,请将划线处的语句补充完整。#include<iostream>using namespace std;class MyClass \{ public: MyClass(int x):val(x) \{ \}void Print();private@:int val@;\};4
void Print() \{ cout<<val<<endl; \}int main() \{MyClass obj(10);obj.Print();return 0;\}}答案:MyClass::15. {下列程序运行后的输出结果是 。#include<iostream>using namespace std;class MyClass \{ public: MyClass(int x) \{ cout<<x; \}~MyClass() \{ cout<<0; \}\};int main() \{MyClass obj1(1), *ptr=&obj1;return 0;\}}答案:1016. 某类中有一个无参且无返回值的常成员函数 Show,则在该类中 Show 函数的原型是 。答案:void Show() const;17. 设置虚基类的目的是为了解决多继承产生的 问题。答案:二义性18. {类 Base、Component 和 Derived 的定义如下,请将划线处的语句补充完整。5
class Base \{public:Base(double d):data(d) \{ \}private:double data;\};class Component \{public:Component(int d):data(d) \{ \}private:int data;\};class Derived : public Base \{public: //使用参数 b 初始化成员对象 comDerived(double a, int b, char c): Base(a), ,character(c) \{ \} private:Component com; //成员对象char character;\};}答案:com(b)19. 改错题{下列程序中有三个错误,请指出错误所在行号并改正错误(注意不要修改主函数),使程序的输出结果为:Kelly is 10 years old.Patrick is 35 years old.源文件清单如下:Line1: #include <iostream>Line2: #include <string>Line3: using namespace std;Line4: class Person \{Line5: public:Line6: Person(string str, int _age) : name(str), age(_age) \{ \}Line7: void SetAge(int num) const \{ age=num; \}6
Line8: void Print() const Line9: \{ cout<<name<<" is "<<age<<" years old."<<endl; \}Line10: private:Line11: string name;Line12: int age=10;Line13: \};Line14: int main() \{Line15: Person p1("Kelly"),p2("Patrick",25);Line16: p1.Print();Line17: p2.SetAge(35);Line18: p2.Print();Line19: return 0;Line20: \} }答案:Line6: Person(string str, int _age=10) : name(str), age(_age) { }答案:Line7: void SetAge(int num) { age=num; }答案:Line12: int age;20. {请写出下列程序的输出结果。#include <iostream>using namespace std;class A \{public:A(int i):r1(i) \{ cout<<r1<<endl; \}~A() \{ cout<<'~'<<r1<<endl; \}void print() \{cout<<"Empty:"<<r1<<endl;\}void print() const \{cout<<"Const:"<<r1<<endl;\}void print(int x) \{cout<<"Param:"<<x*x<<endl;\}private:int r1;\};int main() \{A a1(1);const A a2(2);a1.print(3);a2.print();return 0;\} }7
答案:12Param:9Const:2~2~121. {请写出下列程序的输出结果。#include <iostream>#include <string>using namespace std;class Equipment\{public:Equipment(string s="台式机") : nameE(s) \{ cout<<nameE<<endl; \}private:string nameE;\};class Monitor\{public:Monitor(string s="三星") : nameMo(s) \{ cout<<nameMo<<"显示器"<<endl; \}private:string nameMo;\};class Computer:public Equipment\{public:Computer(string s="我") : name(s) \{ cout<<name<<"的电脑"<<endl; \}Computer(string s1, string s2) : name(s1), Equipment(s2) \{ cout<<name<<"的电脑"<<endl; \}private:string name;Monitor mo;\}; int main()\{ Computer c1, c2("小王","笔记本"); return 0;8
\}}答案:台式机三星显示器我的电脑笔记本三星显示器小王的电脑22. {请写出下列程序的输出结果。#include <iostream>using namespace std;class A\{public:void f() \{ cout<<1; \} virtual void g() \{ cout<<2; \}\};class B : public A \{public:void f() \{ cout<<3; \}virtual void g() \{ cout<<4; \}\};void show(A& a) \{ a.f();a.g(); \}int main() \{B b;show(b);return 0;\}}答案:149