《C++面向对象程序设计》考试试题本试卷满分100分;请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来。一、单选题(共10分,每题1分)1.C++中解决命名冲突的机制是:D(A)虚基类(B)虚函数(C)函数重载2.若类A的一个对象所占的内存空间中包含虚函数表的入口地址(A)类A不能有静态数据成员(C)类A中至少有一个成员函数是虚的3.任意一个类,析构函数的个数最多是:(A)不限个数(B)1(C)4.下列关于this指针的说法,哪个是正确的(A)this指针一定指向常量型数据(C)静态成员函数中也可以访问(B)(D)(D)名字空间,则:C类A中公有的成员函数一定是虚的类A的析构函数一定是虚的(D)35.在类定义中,为说明成员的访问权限(A)次数没有具体限定(C)public至少一次面哪种定义方式是正确的,并且使得(A)A*p=newA;(C)constA*p=newA;obj是类A的一个对象,执行语句(A)类A的拷贝构造函数会被调用(C)&aA的值就是&obj6.7.(B)this指向的数据不可更改(D)this指针本身可直接作为成员函数的返回值Athis指针,private,protected,public可以出现次数为:(B)每种至多一次(D)每种至少一次p可以作为函数voidf(A*constpp);的实参:A(B)Aa;A*p=a;(D)Aa;constA*p=a;constA&aA=obj;,则下列说法正确的是:C(B)类A的赋值函数会被调用(D)语句obj.f();等价于语句aA.f();面关于访问类A的私有数据成员的说法,错误的是:(A)(B)(C)(D)9.类A8.类A类A类A类A的友元函数可以访问类A的私有成员。的友元类中的非静态成员函数可以访问类的嵌套类中的非静态成员函数可以访问类中的非静态成员函数可以访问类A的私有成员。的私有成员。的私有成员。中有唯一的一个成员函数f,且f是公有的静态或非静态成员函数,对于类A的一f的函数原型不可以是:B(B)voidf(int&);(D)Af(constint&);A个对象a,执行语句a.f(100);成功,那么(A)A&f(int,int=50);(C)constA*f(constint);10.下面关于类的成员函数描述不正确的是:(A)静态成员函数内可以直接访问类的非静态成员数据(B)静态成员函数内可以直接访问类的静态成员数据-2-(C)非静态成员函数可以直接访问类的非静态成员数据(D)非静态成员函数可以直接访问类的静态成员数据(全局成员)二、判断正误,对于你认为错误的论述,说明原因或举出反例。(每题2分,共20分)1.重载流操作符<<和>>时,如果第一个参数的类型为ostream和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。对,ostream和istream是标准输入输出流、文件流、字符串流的基类2.在同一个类中,可以定义重载的成员函数voidf(int);和virtualvoidf(int);。错,这属于重复定义3.抽象类不会产生实例,所以不需要有构造函数。错,被派生时需要它的构造函数4.类A有一个非静态的成员函数f,其函数原型是:voidA::f()const,则该函数被调用时,一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。错,常函数可以由变量对象或常量对象调用5.异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。错,可以在外层捕获,并且这是最常见的用法6.只要程序中没有Aa1=a2;和Aa1(a2);形式的代码,类A的拷贝构造函数就不会被调用。错,参数传递或函数返回时也调用拷贝构造函数7.在protected继承方式下,派生类对象的指针不能直接转换成指向基类对象的指针。对,否则基类中的公有成员由不可见变为可见,权限被放大8.若静态成员函数中调用了一个函数f,那么f一定不是虚函数。对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函数表中,而静态成员函数不属于对象。9.若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。对,没有别的办法10.构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须有return语句。对、回答下列各题(每题4分,共20分)1.举例说明static关键字的用法和相应目的(至少3种)。f(){staticinta;…}函数体内的静态变量,每次调用该函数时值保持不变staticinta;全局的静态变量,约束作用域为所在文件cla...