C++上机实验报告5(定稿)_c语言上机实验报告
C++上机实验报告5(定稿)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言上机实验报告”。
C++程序实验报告
实验五继承与派生 实验目的1.学习定义和使用类的继承关系,定义派生类 2.熟悉不同继承方式下对基类成员的访问控制 3.学习利用虚基类解决二义性问题 实验要求
1.定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试。
2.定义一个基类BaseCla,有整型变量Number,构造其派生类DerivedCla,观察构造函数和析构函数的执行情况。
3.定义一个车(vehicle)基类,具有Maxspeed、Weight等成员,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNun)等属性。从bicycle和motorcar派生出摩托车(motorbicycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程尝试。实验内容及实验步骤
1.编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:
error C2248 : ‘age’ : cannot acce private member declared in cla ‘Animal’
error C2248 : ‘age’ : cannot acce private member declared in cla ‘Animal’ 把age改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp。错误代码:
#include using namespace std;
cla Animal { private: int age;public: Animal(){};};
cla dog:public Animal { public: void SetAge(int n){
age=n;};};
int main(){ dog one;one.SetAge(23);return 0;}
运行结果:
正确代码:
#include using namespace std;
cla Animal { public: int age;public: Animal(){};};
cla dog:public Animal { public: void SetAge(int n){
age=n;};};
int main(){ dog one;one.SetAge(23);return 0;}
运行结果:
2.编写程序定义一个基类BaseCla,构造其派生类DerivedCla,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。
源代码:
#include using namespace std;cla BaseCla { private: int a;public: BaseCla(){
cout
cout
cla DerivedCla:public BaseCla { private: int b;public: DerivedCla(){
};cout
cout
int main(){ DerivedCla one;
return 0;}
运行结果:
3.用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。
DEBUG:
4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7_3.cpp。
编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。源代码:
#include using namespace std;
cla Vehicle { public: Vehicle(){};int a;void set(){
cout
cla Mortorcar:virtual public Vehicle { public: Mortorcar(){};int b;void set(){
cout
cla Bicycle:virtual public Vehicle { public: Bicycle(){};int c;void set(){
cout
cla Mortorcycle:public Mortorcar,public Bicycle { public: Mortorcycle(){};int d;void set(){
cout
int main(){ Mortorcycle one;one.a =1;one.b=2;one.set();return 0;} 运行结果:
错误情况:
思考题
1.如何在已有的类的基础上设计新的类?
派生一个新的类。
2.基类和派生类对象的构造顺序是怎样的?
先调用基类的构造函数在调用派生类的构造函数。3.如何利用虚基类解决二义性问题? 将共同的基类设置为虚基类,这时从不同的路径继承过来的同名数据成员在内存中就只有一个副本,同一个函数名也只有一个映射。
C++上机实验报告实验名称:实验专业班级:姓名:学号:实验日期:10 11 实验 目录 1.实验目的 2.实验内容 3.程序代码 4.调试结果 5.实验心得 1.实验目的 实验10 (1)进一步了解运算符......
第二次上机实验报告 姓名:王小宁班级:学号: 031012 1234 第一题:题目:编写一个类,声明一个数据成员和一个静态数据成员,其构造函数初始化数据成员,并把静态数据成员加1,其析构函......
姓名:XX 学院:XXX 班级:XXX 学号:XXX- 1 i++;} while(i#include using namespace std; void main() { int i(1),sum(0);for(i;i{sum+=i;}cout using namespace std; const floa......
一. 题目1. 建立一个学生档案,内容包括学号,姓名,年龄,性别,数学,物理和英语3门功课成绩。要求实现以下功能:1) 数据输入;2) 查询某个学生的成绩;3) 按平均排列输出;4) 统计某门课各分数......
C++课程设计报告设计题目:学院: 专业班级: 学生姓名: 学生学号: 指导教师:计算机技术与科学3班 樊冠男 40912140 马军亮提交时间:2011/1/12 成绩:目录C++课程设计报告第一章 引言C++......
