1 / 3
文档名称:

「面向对象程序设计试题(二)」.pdf

格式:pdf   大小:170KB   页数:3页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

「面向对象程序设计试题(二)」.pdf

上传人:wawa 2023/3/28 文件大小:170 KB

下载得到文件列表

「面向对象程序设计试题(二)」.pdf

文档介绍

文档介绍:该【「面向对象程序设计试题(二)」 】是由【wawa】上传分享,文档一共【3】页,该文档可以免费在线阅读,需要了解更多关于【「面向对象程序设计试题(二)」 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。姓名
本试卷满分100分;
请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;
请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸
一并交上来。
一、单选题(共10分,每题1分)
D)名字空)ﻩC)函数重载)ﻩA)虚基类(B)虚函数)ﻫ:C++
间(namespace)
A)类A不能有静态数据成员)ﻫ:若类A的一个对象所占的内存空间中包含虚函数表的入口地址,
(B)类A中公有的成员函数一定是虚的
(C)类A中至少有一个成员函数是虚的(D)类A的析构函数一定是虚的
,析构函数的个数最多是:
(A)不限个数(B)1(C)2(D)3
,哪个是正确的:
(A)this指针一定指向常量型数据(B)this指向的数据不可更改
(C)静态成员函数中也可以访问this指针(D)this指针本身可直接作为成员函数的返回值
,为说明成员的访问权限,private,protected,public可以出现次数为:
(A)次数没有具体限定(B)每种至多一次
D)每种至少一次)ﻩC)public至少一次)
=A)A*p)ﻫ:下面哪种定义方式是正确的,并且使得p可以作为函数voidf(A*constpp);
ﻩ;newA;(B)Aa;A*p=a
(C)constA*p=newA;(D)Aa;constA*p=a;
A)类A的拷贝构造函)ﻫ:obj是类A的一个对象,执行语句constA&aA=obj;,
数会被调用(B)类A的赋值函数会被调用
(C)&aA的值就是&obj(D)();();
。A)类A的友元函数可以访问类A的私有成员)ﻫ:下面关于访问类A的私有数据成员的说法,
(B)类A的友元类中的非静态成员函数可以访问类A的私有成员。
(C)类A的嵌套类中的非静态成员函数可以访问类A的私有成员。
(D)类A中的非静态成员函数可以访问类A的私有成员。
,且f是公有的静态或非静态成员函数,对于类A的一个对象a,执行语句
(100);成功,那么f的函数原型不可以是:
(A)A&f(int,int=50);(B)voidf(int&);
(C)constA*f(constint);(D)Af(constint&);
:
(A)静态成员函数内可以直接访问类的非静态成员数据
(B)静态成员函数内可以直接访问类的静态成员数据
(C)非静态成员函数可以直接访问类的非静态成员数据
(D)非静态成员函数可以直接访问类的静态成员数据
二、判断正误,对于你认为错误的论述,说明原因或举出反例。(每题2分,共20分)
<<和>>时,如果第一个参数的类型为ostream和istream,那么这个重载函数既可以用
于标准输入输出流,也可以用于文件流上。
,可以定义重载的成员函数voidf(int);和virtualvoidf(int);。
,所以不需要有构造函数。
,其函数原型是:voidA::f()const,则该函数被调用时,一定是
通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。
,而不能在外层函数中捕获该异常。
=a2;和Aa1(a2);形式的代码,类A的拷贝构造函数就不会被调用。
,派生类对象的指针不能直接转换成指向基类对象的指针。
,那么f一定不是虚函数。
,那么只能使用构造函数初始化列表来初始化该数据成员。
,不能使用return语句;但在实现该类的自动类型转化函数时,必须有return语
句。
三、回答下列各题(每题4分,共20分)
(至少3种)。
(至少3种)。

&f()const;和成员函数A&f();的区别。
,任意给出一种解决方案,使得支持下面的表达式:
a=10+a;

四、指出下列代码中存在的错误或不足,说明原因。(每题5分,共10分)
1.
#include<>classB:publicAvoidmain()
classA{{{
public:public:A*p=newB;
;()coutp->f}ﻫ()virtual~A(){}virtualvoidg
;()cout<<"A::<<"B::g()"<<endl;}p->g}ﻫ()virtualvoidf
;()p->kﻫ()f()"<<endl;}virtualvoidk
;cout<<"B::k()"<<endl;}deletep}ﻫ()virtualvoidg
{cout<<"A::g()"<<end};}
l;}
};
2.
#include<>classA{
()virtualvoidoutputﻫ{}()A~ﻫ:classA;publicﻫ<include<#
;{ﻫ{}}classB:publicA
public:voidmain()
B(constchar*info){{
m_buf=newchar[256];A*pa=newB("hello!");
{ﻫ;deletepaﻫ;()strcpy(m_buf,info);}pa->output
~B(){delete[]m_buf;}
virtualvoidoutput(){cout<<
m_buf;}
private:
char*m_buf;};
五、写出下面程序的运行结果(每题5分,共10分)
1.
#include<>classB:publicA{voidmain()
classA{public:{
public:~B(){--count;Out{
A():count(1){}();}Bb;
virtual~A(){}virtualA*Copy()const{A*a1=&b;
virtualA*Copy()B*p=newB(*this);a1->Out();
const=0;++p->count;a1=a1->Copy
virtualvoidOut()constreturnp;();
=0;}a1->Out();
protected:virtualvoidOut()constdeletea1;
intcount;{cout<<count<<endl;}}
};};
}
2.
#include<>classB:publicA{
classA{public:
public:B(A&a):obj(a),A(1){}
A(intn):num(n){Out();}voidOut(){();}
A(constA&rhs):num(){Out//B(constB&b){
();}//}
voidOut(){cout<<num<<endl;}private:
public:Aobj;
intnum;};