《面向对象程序设计》复习题4

发布时间:2023-12-04 20:12:17浏览次数:21
[试题分类]:面向对象程序设计1. 在 C++中,支持数据封装的工具是A. 类B. 对象C. 重载D. 函数答案:A2. 下列符号中,属于 C++关键字的是A. repeatB. beginC. iostreamD. static答案:D3. {有如下语句序列:int x=100,&r=x;cout<<&x<<'-'<<r<<endl;已知其中变量 x 的地址为 0012FF7C,则执行该语句序列的输出结果为}A. 0012FF7C-0012FF7CB. 100-0012FF7CC. 0012FF7C-100D. 100-100答案:C4. 下列选项中,作为重载函数调用时选择依据的是A. 参数名字1 B. 函数体C. 函数名称D. 函数返回类型答案:C5. 下列关于类定义的叙述中,错误的是A. 类定义中包括数据成员和成员函数的声明B. 类成员的默认访问权限是私有的C. 只能在类体内对数据成员进行初始化D. 成员函数必须在类体内声明答案:C6. 下列关于类和对象的叙述中,错误的是A. 类具有封装性B. 对象是类的具体实例C. 类对象可以访问类的全部成员D. 类是所有对象的共同的行为和不同的状态的集合体答案:C7. 下列关于静态成员的叙述中,错误的是A. 静态成员不属于对象,是类的共享成员B. 静态数据成员要在类外定义和初始化C. 调用静态成员函数时可以通过类激活2 D. 非静态成员函数也可以操作静态数据成员答案:B8. 下列关于友元的叙述中,错误的是A. 关键字 friend 用于声明友元B. 一个类的成员函数可以是另一个类的友元C. 友元函数访问对象的成员不受访问特性影响D. 友元函数也是成员函数答案:D9. 当派生类从基类私有继承时,基类中的公有成员和保护成员成为派生类的A. 保护成员和私有成员B. 公有成员C. 私有成员D. 保护成员答案:C10. 在一个派生类对象结束其生命周期时,下列叙述中正确的是A. 先调用基类的析构函数,后调用派生类的析构函数B. 先调用派生类的析构函数,后调用基类的析构函数C. 如果基类没有定义析构函数,则只调用派生类的析构函数D. 如果派生类没有定义析构函数,则只调用基类的析构函数答案:B3 11. 下列运算符中,可以重载为类的友元函数的运算符是A. =B. <<C. .D. ()答案:B12. 下列选项中,调用虚函数时可能产生动态联编的是A. 对象名B. 派生类名C. 基类指针D. 派生类指针答案:C13. 下列选项中,属于 istream 类对象是A. cinB. coutC. cerrD. clog答案:A14. 若有函数声明“void fun(int *x);”,则函数 fun 是按    方式传递参数的。答案:引用15. 所有在类内部定义的成员函数都说明为     函数。答案:内联16. {请将划线处默认构造函数的定义补充完整,使语句“Point p1;”创建的 p1 对象为原4 点。class Point \{public: :x(xx),y(yy) {}private: int x,y;\};}答案:Point(int xx=0, int yy=0)17. 是一个隐含于类的每一个非静态成员函数中的特殊指针。答案:this 指针18. {下列程序运行后的输出结果是    。#include<iostream>using namespace std;class MyClass \{ public: MyClass(int x) \{ cout<<x; \}~MyClass() { cout<<0; }\};int main() \{MyClass obj1(1),obj2(obj1),&ptr=obj1;return 0;\}}答案:10019. 有两个类 M 和 C,其中类 C 定义如下:class C \{ public: M m; \};。若建立类 C 的对象 object,则对象 m 和对象 object 中后被初始化的是对象    。答案:object20. 为了解决多继承产生的    问题,在 C++中引入了虚基类。5 答案:二义性21. 如果类 Alpha 继承自类 Beta,则类 Beta 称为    类。答案:基类或父类22. {请写出下列程序的输出结果。#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),a2(2);a1.print();a2.print(3);return 0;\} }答案:12Empty:1Param:9~2~123. { 请写出下列程序的输出结果。#include <iostream>using namespace std;6 class One\{public:One() \{ cout<<"One"<<endl; \}~One() \{ cout<<"~One"<<endl; \}\};class Two\{public:Two() \{ cout<<"Two"<<endl; \}~Two() \{ cout<<"~Two"<<endl; \}\};class Base1\{public:Base1() \{ cout<<"Base1"<<endl; \}~Base1() \{ cout<<"~Base1"<<endl; \}\};class Base2\{public:Base2() \{ cout<<"Base2"<<endl; \}~Base2() \{ cout<<"~Base2"<<endl; \}\};class Derived : public Base2, public Base1\{public:Derived() \{ cout<<"Derived"<<endl; \}~Derived() \{ cout<<"~Derived"<<endl; \}private:One o1;Two t1;\};int main()\{Derived obj;return 0;\} }答案:Base2Base1OneTwoDerived~Derived~Two~One~Base17 ~Base224. {请写出下列程序的输出结果。#include <iostream>using namespace std;class Animal \{public:virtual char* getType() const \{ return "Animal"; \}virtual char* getVoice() const \{ return "Voice"; \}\};class Dog : public Animal \{public:char* getType() const \{ return "Dog"; \}char* getVoice() const \{ return "Woof"; \}\};void type(Animal& a) \{ cout<<a.getType(); \}void speak(Animal a) \{ cout<<a.getVoice(); \}int main() \{Dog d; type(d); cout<<" speak "; speak(d); cout<<endl;return 0;\}}答案:Dog Speak Voice8
文档格式: docx,价格: 5下载文档
返回顶部