C++习题(第八章)继承与派生 实验例子参考答案.doc

上传人:夏** 文档编号:542364616 上传时间:2023-06-13 格式:DOC 页数:5 大小:43.50KB
返回 下载 相关 举报
C++习题(第八章)继承与派生 实验例子参考答案.doc_第1页
第1页 / 共5页
C++习题(第八章)继承与派生 实验例子参考答案.doc_第2页
第2页 / 共5页
C++习题(第八章)继承与派生 实验例子参考答案.doc_第3页
第3页 / 共5页
C++习题(第八章)继承与派生 实验例子参考答案.doc_第4页
第4页 / 共5页
C++习题(第八章)继承与派生 实验例子参考答案.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《C++习题(第八章)继承与派生 实验例子参考答案.doc》由会员分享,可在线阅读,更多相关《C++习题(第八章)继承与派生 实验例子参考答案.doc(5页珍藏版)》请在金锄头文库上搜索。

1、第八章 类 习题一、 选择题1关于类和对象的说法中,不正确的是( D )。 A属于同一个类的对象,具有相同的数据成员和成员函数。 B类是一种自定义的数据类型,而对象是类的实例。 C类是对象的类,对象是类的对象,没有脱离了类的对象。 D类和对象没有什么不同,都是C+中用来存储数据的一种工具。2没有指明访问权限的类成员,其访问权限默认为( B )。A公有访问权限 B私有访问权限C保护访问权限 D不能确定3( C )的功能是对象进行初始化。 A析构函数 B数据成员C构造函数 D成员函数 4关于构造函数的说法,下面不正确的是( A )。 A如果类中没有定义默认构造函数,则系统会为该类生成一个默认构造函

2、数。 B默认的构造函数没有参数。 C构造函数在对象创建时被自动调用。 D构造函数没有返回值。5假如A是一个类,a1,a2是它的两个对象,有函数func(A a);下列过程中没有调用拷贝构造函数的是( D )。A A a1(a2);B A a1=a2;Cfunc(a1); D a1(10);6对书中的Date类,下面对象声明中不正确的是( D )。ADate d1;BDate d2(d1);CDate d3(2009);DDate d4();7关于析构函数,下列说法错误的是( C )。A析构函数没有参数B析构函数没有返回值C析构函数可以重载D如果没有定义类的析构函数,系统会帮我们创建一个析构函数

3、。8关于成员函数重载,下列说法正确的是( D )。A就是在类中设计多个函数名相同、参数类型和个数也相同的多个函数。B构造函数不能重载C析构函数可以重载D函数的重载,要求函数名相同,参数要么类型不相同,要么个数不相同。9下列说法错误的是( C )。/ 这道题超出所学范围了,可以忽略A系统生成的默认拷贝构造函数只能实现浅拷贝的功能。B如果只是对象值复制,采用系统生成的拷贝构造函数就够了。C如果自己不定义拷贝构造函数,系统会生成一个什么也不做的拷贝构造函数。D深拷贝使得不同的对象拥有不同的资源。二、填空题1类中成员的访问权限有_public_、_private_、_protected_三种,缺省的访

4、问权限是_private_。2通常,我们通过_公有成员函数_和_友元_来对私有成员变量进行访问和修改。3深拷贝和浅拷贝的区别在于_/超范围了_。4this指针是一个隐含于_成员函数中_的特殊指针,它指向_当前被调用的成员函数操作的对象_,这个过程是由系统掌握的。5. 如果一些事情希望在对象刚生成时就自动进行,则可将其写在_构造函数_中,如果希望在对象被删除之前的时刻自动进行,则可将其写在_析构函数_中。6. 在创建类的对象时,如果这个类中具有若干对象成员,则各对象成员的构造函数及组合对象的构造函数调用的顺序为_按照对象成员的声明顺序_,析构函数的调用执行顺序为_按照对象成员的声明顺序的反序_。

5、三、分析下列程序出错的原因或可能存在的问题,并改正。1. #include using namespace std;class Count int t;public: Count();Count(int i);Count:Count()t=0;Count:Count(int i)t=i;int main( )Count c1(10);coutc1.t; /类对象不能直接访问私有数据成员return 0; 2.#include using namespace std;class Person char *name;public:Person(char* name); /类内应写析构函数释放掉申请

6、的空间Person:Person(char* name)name=new char10;if (name!=NULL) strcpy(name, name); /strcpy(this-name,name); int main( )Person p(xiaoming);return 0; 3. #include using namespace std;class Dateint year;int month;int day;public:Date(int year, int month, int day);class Person char *name;Date Birthday;public

7、:Person(char* name);Person(); ;Date:Date(int year,int month,int day)this-year=year;this-month=month;this-day=day;Person:Person(char* name) /应当要对Birthday初始化name=new char10;if (name!=NULL) strcpy(name,name); /strcpy(this-name,name);Person:Person()delete name;int main( )Person p(xiaoming);return 0; 四、写

8、出下列程序的运行结果1 #includeusing namespace std;class Data private:int i; double d; public: void setdata(int n) i=n; void setdata(double x) d=x; void disp() couti=i,d=dendl; ; void main() Data s; s.setdata(10); s.setdata(15.6); s.disp(); i=10, d=15.62. #include using namespace std;class data int y; public:

9、data(int x) y = x; coutconstructing data class endl; data( ) coutdatas destructor called. endl; ; class A data d1; public: A(int x) : d1(x)cout constructing A class endl; A( ) coutAs destructor called. endl; ;int main( )A a(10);return 0; constructing data class constructing A classAs destructor called.datas destructor called.Press any key to continue

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号