首页 《C++面向对象程序设计》期末考试试题

《C++面向对象程序设计》期末考试试题

举报
开通vip

《C++面向对象程序设计》期末考试试题《C++面向对象程序设计》考试试题 · 本试卷满分100分; · 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; · 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。 1、 单选题(共10分,每题1分) 1. C++中解决命名冲突的机制是:D (A) 虚基类 (B) 虚函数 (C) 函数重载 (D) 名字空间 2. 若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则: C (A) 类A不能有静态数据成员      ...

《C++面向对象程序设计》期末考试试题
《C++面向对象程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 》考试 试题 中考模拟试题doc幼小衔接 数学试题 下载云南高中历年会考数学试题下载N4真题下载党史题库下载 · 本试卷满分100分; · 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; · 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。 1、 单选题(共10分,每题1分) 1. C++中解决命名冲突的机制是:D (A) 虚基类 (B) 虚函数 (C) 函数重载 (D) 名字空间 2. 若类A的一个对象所占的内存空间中包含虚函数 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的入口地址,则: C (A) 类A不能有静态数据成员       (B) 类A中公有的成员函数一定是虚的 (C) 类A中至少有一个成员函数是虚的   (D) 类A的析构函数一定是虚的 3.任意一个类,析构函数的个数最多是:B (A) 不限个数 (B) 1 (C) 2 (D) 3 4. 下列关于this指针的说法,哪个是正确的: D (A) this指针一定指向常量型数据 (B) this指向的数据不可更改 (C) 静态成员函数中也可以访问this指针 (D) this指针本身可直接作为成员函数的返回值 5.在类定义中,为说明成员的访问权限,private, protected, public 可以出现次数为:A (A)次数没有具体限定 (B) 每种至多一次 (C) public 至少一次 (D) 每种至少一次 6.下面哪种定义方式是正确的,并且使得p可以作为函数void f( A* const pp);的实参:A (A) A * p = new A; (B) A a; A* p = a; (C) const A* p = new A; (D) A a; const A* p = a; 7. obj是类A的一个对象,执行语句 const A& aA= obj; ,则下列说法正确的是: C (A) 类A的拷贝构造函数会被调用 (B) 类A的赋值函数会被调用 (C) &aA的值就是 &obj (D) 语句obj.f( );等价于语句aA.f( ); 8.下面关于访问类A的私有数据成员的说法,错误的是: C (A) 类A的友元函数可以访问类A的私有成员。 (B) 类A的友元类中的非静态成员函数可以访问类A的私有成员。 (C) 类A的嵌套类中的非静态成员函数可以访问类A的私有成员。 (D) 类A中的非静态成员函数可以访问类A的私有成员。 9.类A中有唯一的一个成员函数f,且f是公有的静态或非静态成员函数,对于类A的一个对象a,执行语句 a.f(100);成功,那么f 的函数原型不可以是:B (A) A& f( int, int=50 ); (B) void f(int& ) ; (C) const A * f(const int ); (D) A f( const int&); 10. 下面关于类的成员函数描述不正确的是:A (A) 静态成员函数内可以直接访问类的非静态成员数据 (B) 静态成员函数内可以直接访问类的静态成员数据 (C) 非静态成员函数可以直接访问类的非静态成员数据 (D) 非静态成员函数可以直接访问类的静态成员数据(全局成员) 二、判断正误,对于你认为错误的论述,说明原因或举出反例。(每题2分,共20分) 1. 重载流操作符<<和>> 时,如果第一个参数的类型为ostream 和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。 对,ostream 和istream是标准输入输出流、文件流、字符串流的基类 2. 在同一个类中,可以定义重载的成员函数 void f(int);和virtual void f(int); 。 错,这属于重复定义 3. 抽象类不会产生实例,所以不需要有构造函数。 错,被派生时需要它的构造函数 4. 类A有一个非静态的成员函数f,其函数原型是:void A::f( ) const,则该函数被调用时,一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。 错,常函数可以由变量对象或常量对象调用 5. 异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。 错,可以在外层捕获,并且这是最常见的用法 6. 只要程序中没有A a1 = a2; 和A a1(a2); 形式的代码,类A的拷贝构造函数就不会被调用。 错,参数传递或函数返回时也调用拷贝构造函数 7. 在protected继承方式下,派生类对象的指针不能直接转换成指向基类对象的指针。 对,否则基类中的公有成员由不可见变为可见,权限被放大 8. 若静态成员函数中调用了一个函数f,那么f 一定不是虚函数。 对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函数 表中,而静态成员函数不属于对象。 9. 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。 对,没有别的办法 10. 构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须有return 语句。 对 三、回答下列各题(每题4分,共20分) 1. 举例说明static关键字的用法和相应目的(至少3种)。 f(){ static int a;…} 函数体内的静态变量,每次调用该函数时值保持不变 static int a; 全局的静态变量,约束作用域为所在文件 class A {static int a;…}; A的静态成员,类似全局变量,需用A::a访问 2. 举例说明类的数据成员在哪些情况下必须在初始化列表中进行初始化(至少3种)。 基类不提供无参的构造函数 成员对象不提供无参的构造函数 有常量成员或引用成员 3. 举例说明虚拟继承的作用和目的。 虚拟继承的目的是使基类在派生类中只保留一个副本 从而避免二义性 4. 举例说明成员函数A& f( ) const;和成员函数A& f( ); 的区别。 A& f( ) const是常函数,隐含的this指针是常指针,因此在f中不能修改对象成员的值。 举例略 5. 有类A的对象a,任意给出一种解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,使得程序支持下面的表达式: a=10+a; class A { A(int); //转换构造函数 friend const A operator+(const A,const A); //重载+ }; 四、指出下列程序代码中存在的错误或不足,说明原因。(每题5分,共10分) 1. #include class A { public: virtual ~A( ) { } virtual void f( ) { cout<<"A::f( )"<f( ); p->g( ); p->k( ); delete p; } 答:函数k在A中没有定义,执行p->k( );时要根据p的类型在A中查k的信息 2. #include #include class A; class B:public A { public: B(const char* info){ m_buf=new char[256]; strcpy(m_buf,info); } ~B( ) { delete[] m_buf; } virtual void output( ) { cout << m_buf; } private: char * m_buf; }; class A { public: ~A( ) { } virtual void output( ) { } }; void main() { A*pa = new B("hello!") ; pa->output( ); delete pa; } 答:A的析构函数应定义为虚函数,否则B的析构函数不会被调用,m_buf也不会被释放 五、写出下面程序的运行结果(每题5分,共10分) 1. #include class A { public: A( ):count(1) {} virtual ~A( ) {} virtual A* Copy( ) const = 0; virtual void Out( ) const = 0; protected: int count; }; class B:public A { public: ~B( ) { --count; Out( ); } virtual A* Copy( ) const { B *p = new B(*this); ++p->count; return p; } virtual void Out( ) const { cout << count << endl; } }; void main( ) { { B b; A* a1=&b; a1->Out( ); a1 = a1->Copy( ); a1->Out( ); delete a1; } } 答: 1 2 1 0 -------------------- 2. #include class A { public: A(int n):num(n) { Out( ); } A(const A& rhs):num(rhs.num) {Out( );} void Out( ) {cout< class A { public: A(int n):value(n) { } void Display( ) const {cout<<"Value = "< 计算公式 六西格玛计算公式下载结构力学静力计算公式下载重复性计算公式下载六西格玛计算公式下载年假计算公式 f(x)是不同的,该程序员希望曲线函数的种类可以通过继承curve类的方式任意增加,增加一个新的f(x)时不改变curve类中的内容,也不改变利用curve类进行图形绘制的算法。已部分完成的curve类定义和实现如下: class curve { public: void setPxs( ) {/*把获取的横坐标数据存放在pxs代表的数组中,并为count置值*/ } double* getPxs( ) const { return pxs;} int getCount( ) const { return count;} double* getPys( ) const ; private: double* pxs; double* pys; int count }; 1、请按照该程序员的设计意图给出成员函数getPys的完整实现。实现过程中,可以为curve类增加其它成员。可以假设setPxs函数已经完整实现,不需要考虑曲线的绘制和显示。 答: class curve { public: void setPxs( ) {/*把获取的横坐标数据存放在pxs代表的数组中,并为count置值*/ } double* getPxs( ) const { return pxs;} int getCount( ) const { return count;} double* getPys( ) const ; virtual double f(double)=0; private: double* pxs; double* pys; int count }; double* curve::getPys( ) const { if(pys==NULL) pys=new double[count]; for(int i=0;i
本文档为【《C++面向对象程序设计》期末考试试题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_859848
暂无简介~
格式:doc
大小:91KB
软件:Word
页数:6
分类:工学
上传时间:2013-06-24
浏览量:208