《南开大学2021年春季学期《面向对象程序设计》在线作业附参考答案.docx》由会员分享,可在线阅读,更多相关《南开大学2021年春季学期《面向对象程序设计》在线作业附参考答案.docx(15页珍藏版)》请在优知文库上搜索。
1、南开大学2021年春季学期(17091803180919031909、20032009、2103)面向对象程序设计在线作业附参考答案适用于(1709、1803、1809、1903、1909、2003、2009、2103)试卷总分:IOO得分:IOO一、单选题(共35道试题,共70分)1 .下列关于构造函数说法不正确的是()。A.构造函数必须与类同名B.构造函数可以省略不写C.构造函数必须有返回值D.在构造函数中可以对类中的成员进行初始化答案:C2 .若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的(?)。A.私有成员B.公有成员C.保护成员D.保护成员或私有成员答案
2、:A3 .类A是类B的友元,类B是类C的友元,则()是正确的。A.类B是类A的友元B.类C是类A的友元C.类A是类C的友元D.以上都不对答案:D4 .下列关于构造函数调用顺序的描述中,正确的是()。A.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数B,创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数C.创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数D.创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数答案:A更多加微boge306195 .派生类的构造函数的成员初始化列表中,不能包含()。A.基类的构造函数B.派生类中子对象的初始化C.基类
3、的子对象初始化D.派生类中一般数据成员的初始化答案:C6.对于任意一个类,析构函数的个数最多为()。A.0B. 1C. 2D. 3答案:B7对于任意一个类,构造函数的个数最少为()。A.0B. 1C. 2D. 3答案:B8 .类MyClass的定义如下:ClaSSMyClasspublic:MyClass()value=0;SetVariable(inti)value二i;private:intvalue;则对下列语句序列正确的描述是()。MyClass*p,my;p-&my;A.语句p=&my;是把对象my赋值给指针变量PB.语句MyelaSs*p,my;会调用两次类MyCIaSS的构造函数
4、C对语句*p.SetVariable(5)的调用是正确的D.语句p-SetVariable(5)与语句my.SetVariable(5)等价答案:D9 .下列类中()是输入/输出流类iostream的派生类。A. fstreamB. ofstreamC.ifstrearnD.ostream答案:A10.有下面类的说明,有错误的语句是()。classXA.inta=2;B.X();public:C.X(intval);D.X();;A. AB. BC. CD. D答案:AIL如果一个类至少有一个纯虚函数,那么就称该类为()。A.抽象类B.派生类C.纯基类D.以上都不对答案:A12 .下面说法中正
5、确的是()。A.一个类只能定义一个构造函数,但可以定义多个析构函数B.一个类只能定义一个析构函数,但可以定义多个构造函数C.构造函数与析构函数同名,只要名字前加了一个求反符号D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是VOid类型也不可以答案:B13 .下面函数原型声明中,()声明了fun为纯虚函数。A. voidfun()-0;B. virtualvoidfun()-0;C. virtualvoidfun();D. virtualvoidfun();答案:B14 .类的默认的无参构造函数()。A.在任何情况下都存在B.仅当未定义无参构造函数时存在C.仅当未定义有参构造
6、函数时存在D.仅当未定义任何构造函数时存在答案:D15 .撤消对象时,系统自动调用()函数。A.成员函数B,构造函数C.析构函数D.普通函数答案:C16 .对静态成员的不正确描述是()。A.静态成员不属于对象,是类的共享成员B.静态数据成员要在类外定义和初始化C,调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D.非静态成员函数也可以操作静态数据成员答案:C17 .关于对象成员的构造函数的调用顺序,说法正确的是()。A.与它们在成员初始化列表中给出的顺序相同B.与析构函数的调用顺序相同C.与它们在类中说明顺序相同D.以上说法都不对答案:C18 .下面()的叙述不符合赋值兼
7、容规则。A.派生类的对象可以赋值给基类的对象B.基类的对象可以赋值给派生类的对象C.派生类的对象可以初始化基类的对象D.派生类的对象的地址可以赋值给指向基类的指针答案:B19 .关于多继承二义性的描述中,错误的是()。A.一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B.解决二义性的最常用的方法是对成员名的限定法C.基类和派生类同时出现的同名函数,也存在二义性问题D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性答案:C20 .有关析构函数的说法不正确的是()。A.析构函数有且仅有一个B.析构函数和构造函数
8、一样可以有形参C.析构函数的功能是用来释放一个对象D.析构函数无任何函数类型答案:B21 .下面说法中正确的是()。A.当声明的内容不同时,声明同一个名字的两个类是允许的B.不完全声明的类也可以实例化C.声明同一个名字的两个类时,要求声明的内容也相同D.声明同一个名字的两个类是错误的答案:D22 .下列虚基类的声明中,正确的是()。A.classvirtualB:publicAB.virtualclassB:publicAC.classB:publicAvirtualD.classB:virtualpublicA答案:D23.友元访问类对象的成员时使用()。A.类的成员名B.“this-成员名
9、”的形式C.“类名:成员名”的形式D.对象名.成员名”的形式答案:D24 .类对象占用内存的大小与()有关。A.数据成员B.成员函数C.数据成员和成员函数D.私有成员答案:A25 .若一个类中含有纯虚函数,则该类称为()。A.基类B.纯基类C.派生类D.抽象类答案:D26 .C+对C语言做了很多改进,下列描述中()使得C语言发生了质变,即从面向过程变成面向对象。A.增加了一些新的运算符B,允许函数重载,并允许设置默认参数C.规定函数说明必须用原型D.引进类和对象的概念答案:D27 .下面关于类的成员函数描述不正确的是()。A.静态成员函数内可以直接访问类的非静态成员数据B.静态成员函数内可以直
10、接访问类的静态成员数据C.非静态成员函数可以直接访问类的非静态成员数据D.非静态成员函数可以直接访问类的静态成员数据答案:A28 .关于动态关联的下列叙述中,()是错误的。A.动态关联是以虚函数为基础的B.动态关联调用虚函数操作是指向对象的指针或引用C.动态关联是在运行时确定所调用的函数代码的D.动态关联是在编译时确定操作函数的答案:D29 .假定MyClaSS为一个类,则该类的拷贝构造函数的声明语句为()。A. MyClass(MyClassx)B. MyClassfe(MyClassx)C. MyClass(MyClass&x)D. MyClass(MyClass*x)答案:C30.交换两
11、个String类对象所表示的字符串的内容,应该使用string类的()函数。A.assignB.insertC. swapD. find答案:C3L关于虚函数,下列表述正确的是()。A.如果在重定义虚函数时使用virtual,则该重定义函数仍然是虚函数B.虚函数不得声明为静态函数C.虚函数不得声明为另一个类的友元函数D.派生类必须重新定义基类的虚函数答案:B32.在类定义的外部,可以被访问的成员有()。A.所有类成员B. private或protected的类成员C. public的类成员D. public或private的类成员答案:C33.已知“inta=10;int&r=a;r=r+20
12、;couta;贝J输出为0。A. 10B. 20C. 30D.不确定值答案:C34.关于类和对象不正确的说法是()。A.类是一种类型,它封装了数据和操作B.对象是类的实例C.一个类的对象只有一个D.一个对象必属于某个类答案:C35.友元关系不能()。A.继承B.是类与类之间是关系C.是一个类的成员函数与另一个类的关系D.提高程序的运行效率答案:A二、判断题(共15道试题,共30分)36 .在C+程序中,有且仅能有一个主函数,且其函数名必须是maio答案:正确37 .对象成员的访问与结构变量成员的访问相同,使用运算符.或-。答案:正确38 .一个类的构造函数中可以不包含对其子对象的初始化。答案:
13、错误39 .在类体中可以在声明成员变量的同时为其赋初值。40 .类的常量数据成员的值只能在创建对象时初始化,初始化后不得再修改。答案:正确4L在成员函数的函数类型前加上COnSt关键字,则该成员函数就是常量成员函数。答案:错误42 .类的成员函数中可以直接访问对象成员中的私有成员。答案:错误43 .派生类的继承方式中有两种:公有继承和私有继承。答案:错误44 .引用是某个变量的别名。对引用的操作,实质上就是对被引用的变量的操作。答案:正确45 .私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。46 .假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:ABoperator+(AB&,AB&);答案:错误47 .运算符重载的形式有两种:成员函数形式和友元形式。答案:正确48 .类的静态成员变量只能在静态成员函数中使用。答案:错误49 .在私有继承中,基类中只有公有成员对派生类是可见的。答案:错误50 .运算符重载是一种特殊的函数重载,其函数名为operatoro答案:正确