C上机实验报告实验五

C上机实验报告实验五

ID:42466776

大小:88.50 KB

页数:6页

时间:2019-09-15

C上机实验报告实验五_第1页
C上机实验报告实验五_第2页
C上机实验报告实验五_第3页
C上机实验报告实验五_第4页
C上机实验报告实验五_第5页
资源描述:

《C上机实验报告实验五》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验五继承与派生1.实验目的1•学习定义和使用类的继承关系,定义派生类2.熟悉不同继承方式下对基类成员的访问控制3•学习利用虚基类解决二义性问题2.实验要求1.定义一个基类Animal,冇私冇整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试。2.定义一个基类BaseClass,冇整型变虽Number,构造英派生类DerivedClass,观察构造函数和析构函数的执行情况。3.定义一个

2、车(vehicle)基类,具有Maxspeed>Weight等成员,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNun)等属性。从bicycle和motorcar派生出摩托车(motorbicycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程尝试。3.实验内容及实验步骤1•编写程序定

3、义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(intn)屮肓接对age赋值时,会出现类似以下的错谋提示:errorC2248:'age':cannotaccessprivatememberdeclaredinclass'AnimaKerrorC2248:'age':cannotaccessprivatememberdeclaredinclass'AnimaK把age改为公有成员变量后重新编译就可以了。程序名:Iab7_l.cpp。2.编写程序定义一个

4、基类BaseClass,构造其派卞类DerivedClass,在构造函数和析构函数屮用cout输岀提示信息,观察构造函数和析构函数的执行情况。程序名:Iab7_2.卬p。3•用debug功能跟踪程序Iab7_2的执行过程,观察基类和派牛类的构造函数和析构函数的执行情况。4•编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在mai

5、n()函数中测试这个类。程序名:lab7_3.cpp。编译成功后,把vehicle设置为非虚慕类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。4.思考题1.如何在已有的类的基础上设计新的类?采用类的派生的方法,利用某类派生出子类,了类继承基类的属性,从而在已冇基类的垄础上设计新的派生类,模式如下:class派生类名:继承方式基类名1,继承方式基类名2,继承方式基类名n{派生类成员声明;};2•基类和派生类对象的构造顺序是怎

6、样的?先调用基类的构造函数,然后再调用内嵌対象(派牛:类中的対象)的构造函数。基类构造函数的调丿IJ顺序是按照派住类定义时的顺序,而内嵌对象的构造函数调川顺序是按照成员在类中声明的顺序。1.如何利川虚基类解决二义性问题?将共同基类设置为虚基类,语法为:class派生类名:virtual继承方式基类名5.源程序Lab7_l.cpp#includeusingnamespacestd;classAnimal//Animal类{/*private:intage;*/public:in

7、tage;Animal(){}~Animal(){}Animal(int);};classDog:publicAnimal//Dog类,Animal的公有派生类{private:intnumber;public:Dog(){}~Dog(){}Dog(intjnt);voidsetAge(int);voidshowNumberf);voidshowAge();};Animal::Animal(inta)//Animal构造函数{age=a;}Dog::Dog(intn,inta)//Dog构造函数

8、{number=n;age=a;}voidDog::setAge(intn)//Dog成员函数,setAge{age=n;}〃数据输出两数voidDog::showNumber()cout«HNumber:"

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。