欢迎来到天天文库
浏览记录
ID:35428128
大小:71.17 KB
页数:10页
时间:2019-03-24
《程序设计教程(机械工业出版社)课后习题答案第8章继承――派生类》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第8章继承一一派生类1、在C++中,protected类成员访问控制有什么作用?答:C++中引进protected成员保护控制,缓解了数据封装与继承的矛盾。在基类中声明为protected的成员可以被派生类使用,但不能被基类的实例用户使用,这样能够对修改基类的内部实现所造成的影响范围(只影响子类)进行控制。protected成员保护控制的引进使得类有两种接口:与实例用户的接口和与派生类用户的接口。2、在C++中,三种继承方式各有什么作用?答:类的继承方式决定了派生类的对彖和派生类的派生类对基类成员的访问限制。p
2、ublic继承方式使得基类的public成员可以被派生类的对象访问,它可以实现类之间的子类型关系;protected继承使得基类的public成员不能被派生类的对象访问,但可以被派生类的派生类访问;private继承使得基类的public成员既不能被派生类的刈像访问,也不能被派生类的派生类访问。protected和private继承主要用于实现上的继承,即纯粹为了代码复用。3、在多继承中,什么情况下会出现二义性?怎样消除二义性?答:在多继承屮会出现两个问题:名冲突和重复继承。在多继承屮,当多个基类中包含同名的成
3、员时,它们在派生类中就会出现名冲突问题;在多继承中,如果直接基类有公共的基类,就会出现重复继承,这样,公共基类中的数据成员在多继承的派生类中就有多个拷贝。在C++屮,解决名冲突的方法是用基类名受限;解决重复继承问题的手段是采用虚基类。4、写出下面程序的运行结果:#includeusingnamespacestd;classA{intm;public:A(){cout<4、ructorn;}~A(){cout<5、stC&){cout<<,finC1scopyconstructorn;}~C(){cout<6、n0;}答:Section1inB'sdefaultconstructorinA'sdefaultconstructorinCsdefaultconstructorSection2inB'sdefaultconstructorinA*sdefaultconstructorinCscopyconstructorInfundinCsdestructorinA'sdestructorinB'sdestructorSection3Infunc2Section4inC*sdestructorinA'sdestructor7、inB'sdestructor5.写出下面程序的运行结果:#includeusingnamespacestd;classAintx,y;public:A(constA&){cout~A(){cout«!,invirtualvoidf(){voidg(){cout<8、,inA!sg!,;}voidh(){f();g();}};答:classB:publicA{intz;public:B(){cout<
4、ructorn;}~A(){cout<5、stC&){cout<<,finC1scopyconstructorn;}~C(){cout<6、n0;}答:Section1inB'sdefaultconstructorinA'sdefaultconstructorinCsdefaultconstructorSection2inB'sdefaultconstructorinA*sdefaultconstructorinCscopyconstructorInfundinCsdestructorinA'sdestructorinB'sdestructorSection3Infunc2Section4inC*sdestructorinA'sdestructor7、inB'sdestructor5.写出下面程序的运行结果:#includeusingnamespacestd;classAintx,y;public:A(constA&){cout~A(){cout«!,invirtualvoidf(){voidg(){cout<8、,inA!sg!,;}voidh(){f();g();}};答:classB:publicA{intz;public:B(){cout<
5、stC&){cout<<,finC1scopyconstructorn;}~C(){cout<6、n0;}答:Section1inB'sdefaultconstructorinA'sdefaultconstructorinCsdefaultconstructorSection2inB'sdefaultconstructorinA*sdefaultconstructorinCscopyconstructorInfundinCsdestructorinA'sdestructorinB'sdestructorSection3Infunc2Section4inC*sdestructorinA'sdestructor7、inB'sdestructor5.写出下面程序的运行结果:#includeusingnamespacestd;classAintx,y;public:A(constA&){cout~A(){cout«!,invirtualvoidf(){voidg(){cout<8、,inA!sg!,;}voidh(){f();g();}};答:classB:publicA{intz;public:B(){cout<
6、n0;}答:Section1inB'sdefaultconstructorinA'sdefaultconstructorinCsdefaultconstructorSection2inB'sdefaultconstructorinA*sdefaultconstructorinCscopyconstructorInfundinCsdestructorinA'sdestructorinB'sdestructorSection3Infunc2Section4inC*sdestructorinA'sdestructor
7、inB'sdestructor5.写出下面程序的运行结果:#includeusingnamespacestd;classAintx,y;public:A(constA&){cout~A(){cout«!,invirtualvoidf(){voidg(){cout<8、,inA!sg!,;}voidh(){f();g();}};答:classB:publicA{intz;public:B(){cout<
8、,inA!sg!,;}voidh(){f();g();}};答:classB:publicA{intz;public:B(){cout<
此文档下载收益归作者所有