面向对象程序设计复习资料.docx
面向对象程序设计复习资料 面向对象程序设计期末总复习题 一、单项选择题 1.下面关于对象概念的描述中,_是错误的。(B) A.对象代表着正在创建的系统中的一个实体 B.对象就是C语言中的结构体变量 C.对象是一个状态和操作(或方法)的封装体 D.对象之间的信息传递是通过消息进行的 2. 继承机制的作用是:(C) A信息隐藏B数据封装C定义新类D数据抽象 3.有关析构函数的说法不正确的是_(D) A.析构函数有且只有一个 B.析构函数无任何函数类型 C.析构函数没有形参 D.析构函数不能是虚函数 4.友元的作用之一是_(A) A.提高程序的运行效率 B.加强类的封装性 C.实现数据的隐藏性 D.增加成员函数的种类 5.通常拷贝构造函数的参数是_。(C) A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是_。(C) A.virtual show()=0; B.virtual void show(); C.virtual void show()=0; D.void show=0 virtual; 7.下面关于友元的描述中,错误的是_。(D) A.友元函数可以访问该类的私有数据成员 B.一个类的友元类中的成员函数都是这个类的友元函数 C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承 8.在C+中,_运算符不能重载。(B) A. + B.?: C.- D.= C.: D./ 33下面对友元函数描述正确的是_C_ A.友元函数的实现必须在类的内部定义 B.友元函数是类的成员函数 C.友元函数破坏了类的封装性和隐藏性 D.友元函数不能访问类的私有成员34下面叙述不正确的是_A_ A.基类的保护成员在派生类中仍然是保护成员 B.基类的保护成员在公有派生类中仍然是保护成员 C.基类的保护成员在私有派生类中是私有成员 D.对基类成员的访问必须是无二义性 35下面对静态数据成员的描述中,正确的是_D_ A.静态数据成员可以在类体内进行初始化 B.静态数据成员不可以被类的对象调用 C.静态数据成员不能受private控制符的作用 D.静态数据成员可以直接用类名调用 36在C+类语言体系中,不能被派生类继承的有_B A转换函数B构造函数C虚函数D静态成员函数 37在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是_C_ A.友元函数 B.虚函数 C.构造函数 D.析构函数 38下列关于虚基类的描述中,错误的是_B_ A.设置虚基类的目的是为了消除二义性; B.虚基类的构造函数在非虚基类之后调用; C.若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用; D.若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数; 39考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是_C_ A.test(5) B.test(5,8) C.test(6,"#") D.test(0,0."*"); 40下列关于构造函数的描述中,错误的是_D_ A.构造函数可以设置默认参数; B.构造函数在定义类对象时自动执行 C.构造函数可以是内联函数; D.构造函数不可以重载 41.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是( )。 D A一元成员运算符 B二元成员运算符 C一元友元运算符 D选项B和选项C都可能 42在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。 C A派生类的对象可以赋给基类的对象 B派生类的对象可以初始化基类的引用 C派生类的对象可以直接访问基类中的成员 D派生类的对象的地址可以赋给指向基类的指针 43下面关于虚函数的描述,错误的是( )。B A在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C虚函数可以是另一个类的友元函数,但不能是静态成员函数 D基类中说明的纯虚函数在其任何派生类中都必须实现 44定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为( )。 A A私有继承 B非私有继承 C保护继承 D公有继承 45.有如下程序: #include using namespace std; class ONE int c; public: ONE():c(0)coutm) m=bi.x; return m; ; void main() sample a10; int arr=9,8,4,7,55,32,20,15,68,65; for(int i=0;i<10;i+) ai.setx(arri); cout<<"the result is "<<fun(a,10)<<endl; the result is 68 8下列程序的输出结果为( ) #include void fun(int x=0,int y=0) cout<<x<<y<<endl; void main() fun(18); 180 9.写出下列程序的运行结果( ) #include class M public: M(int a=0,int b=0) x=a;y=b; int getx() return x; int gety() return y; private: int x,y; ; void main() M op1(22,18); int i,j; i=op1.getx(); j=op1.gety(); cout<<"j="<<i<<"i="<<j<<endl; j=22i=18 10写出下列程序的运行结果( ) #include class Cat int num,age; public: Cat(int i,int j)num=i;age=j; Cat(Cat &c)num=c.num; age=c.age;num+; void print()cout<<num<<","< ; void main()