欢迎来到天天文库
浏览记录
ID:14870924
大小:800.50 KB
页数:15页
时间:2018-07-30
《c++书中例题源代码第10章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、【例10.1】阅读程序并说明,在主函数main()中定义的3个对象d1,d2和d3,在给它们成员的赋值中,哪些是错误的?classBase{public:intb1;protected:intb2;private:intb3;};classD1:publicBase{public:voidtest(){b1=10;//可以,b1为publicb2=20;//可以,b2为protectedb3=30;//不可以访问}};classD11:publicD1{public:voidtest(){b1=
2、5;//可以,b1为publicb2=6;//可以,b2为protectedb3=7;//不可以访问}};classD2:privateBase{public:voidtest(){b1=8;//可以,b1为privateb2=9;//可以,b2为privateb3=10;//不可以访问}};classD22:publicD2{public:voidtest(){b1=11;//不可以访问b2=12;//不可以访问b3=13;//不可以访问}};classD3:protectedBase{pub
3、lic:voidtest(){b1=15;//可以,b1为protectedb2=16;//可以,b2为protectedb3=17;//不可以访问}};classD33:publicD3{public:voidtest(){b1=18;//可以,b1为protectedb2=19;//可以,b2为protectedb3=20;//不可以访问}};voidmain(){D11d1;d1.b1=1;d1.b2=2;d1.b3=3;D22d2;d2.b1=4;d2.b2=5;d2.b3=6;D33d
4、3;d3.b1=7;d3.b2=8;d3.b3=9;}【例10.2】分析程序,回答下列问题:①派生类B中的成员函数f2()能否访问基类A中的成员f1(),i1和j1?②派生类B的对象能否访问基类A中的成员f1(),i1和j1?③派生类C中的成员函数f3()能否访问直接基类B中的成员f2()和j2?能否访问间接基类A中的成员f1(),j1和i1?④派生类C的对象能否访问直接基类B中的成员f2(),i2和j2?能否访问间接基类A中的成员f1(),j1和i1?⑤从对①~④问题的回答可得出对公有继承方式
5、的什么结论?#includeclassA{public:voidf1();protected:intj1;private:inti1;};classB:publicA{public:f2();protected:intj2;private:inti2;};classC:publicB{public:f3();};【例10.3】分析程序,并回答下列问题:①执行该程序时,哪些语句会出现编译错?为什么?②去掉出错语句后,执行该程序后输出结果如何?③在程序中,派生类B是从基类A继
6、承来的,这种不加继承方式的默认继承是哪种继承方式?④派生类B中,“A::f;”语句的含义是什么?⑤将派生类B的继承方式改为公有继承方式后,该程序的输出结果是什么?这时应加上前面去掉的出错语句。#includeclassA{public:voidf(inti){cout<7、);b.h();}【例10.4】分析程序,并回答下列问题:①执行该程序后的输出结果是什么?②将程序中的classB:protectedA改为classB:privateA以后,该程序是否出现编译错?如无错,输出结果如何?③将程序的类A定义中,数据成员charname[80]的访问权限改为private时,该程序是否出现编译错?如无错,输出结果如何?④说明保护成员和保护继承方式的作用。#include#includeclassA{public:A(con8、stchar*name1){strcpy(name,name1);}protected:charname[80];};classB:protectedA{public:B(constchar*nm):A(nm){}voidPrint()const{cout<<"name:"<classA{public:
7、);b.h();}【例10.4】分析程序,并回答下列问题:①执行该程序后的输出结果是什么?②将程序中的classB:protectedA改为classB:privateA以后,该程序是否出现编译错?如无错,输出结果如何?③将程序的类A定义中,数据成员charname[80]的访问权限改为private时,该程序是否出现编译错?如无错,输出结果如何?④说明保护成员和保护继承方式的作用。#include#includeclassA{public:A(con
8、stchar*name1){strcpy(name,name1);}protected:charname[80];};classB:protectedA{public:B(constchar*nm):A(nm){}voidPrint()const{cout<<"name:"<classA{public:
此文档下载收益归作者所有