教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

C++语言程序设计实验报告 8

来源:网络收集 时间:2026-05-19
导读: C++语言程序设计实验报告 C++语言程序设计实验报告(八) 基础题一 实验任务: 定义object类,有weight属性及相应的操作函数,由此派生出box类,增加Height和width属性及相应的操作函数,声明一个box对象,观察构造函数与析构函数的调用顺序。 分析: 首先定

C++语言程序设计实验报告

C++语言程序设计实验报告(八)

基础题一

实验任务:

定义object类,有weight属性及相应的操作函数,由此派生出box类,增加Height和width属性及相应的操作函数,声明一个box对象,观察构造函数与析构函数的调用顺序。

分析:

首先定义object类,在构造函数中设置构造函数被调用的提示语,再在析构函数中设置析构函数被调用的提示语,再派生出box类,按照题目写下去,运行处的结果,可发现在程序执行完将要释放空间时,析构函数被自动调用,且析构函数被调用的顺序和构造函数被调用的顺序相反。

代码:

#include<iostream>

using namespace std;

class Object

{

public:

Object(float weight)

{

cout<<"该物体的重量为:"<<weight<<"kg"<<endl;

cout<<"Object的构造函数被调用"<<endl;

}

~Object(){cout<<"object的析构函数被调用"<<endl;} };

class Box:public Object

{

public:Box(float a,float b,float c):Object(a),Height(b),Width(c){cout<<"Box的构造函数被调用"<<endl;}

GetH(){cout<<"该物体的长为:"<<Height<<"m"<<endl;}

GetW(){cout<<"该物体的宽为:"<<Width<<"m"<<endl;}

~Box(){cout<<"Box的析构函数被调用"<<endl;}

private:

float Height,Width;

};

int main()

{

Box box1(2,3,4);

box1.GetH();

C++语言程序设计实验报告

box1.GetW();

return 0;

}

结果:

基础题二

实验任务:

通过一个例子说明虚基类的作用,如果不使用虚基类会出现什么问题?

分析: 在不使用虚基类的情况下,如果某个派生类的部分或全部直接基类是从另外一个共同的基类派生而来的,那么在派生类的对象中,这些从共同基类继承的同名数据在内存中拥有多个拷贝,同一函数名会有多个映射。

代码:

#include<iostream>

using namespace std;

class B0

{

public:

B0(int a):nv(a){}

int nv;

void fun()

{

cout<<"fun B0" << endl;

}

};

class B1:public B0

{

public:

B1(int a, int b):B0(a),nv1(b){}

int nv1;

};

class B2:public B0

C++语言程序设计实验报告

{

public:

B2(int a, int c):B0(a),nv2(c){}

int nv2;

};

class D1:public B1,public B2

{

public:

D1(int a, int b, int c, int d):B1(a,b),B2(a,c),nvd(d){}

int nvd;

void fund()

{

cout <<"fund D1" << endl;

}

};

int main()

{

D1 myd(1, 2, 3, 4);

myd.fun();

return 0;

}

结果:

程序报错如下

提高题

实验任务:

定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(mororcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。试编程实现上述要求。并考虑如果不把vehicle设置为虚基类,会有什么问题?

代码:

//class Vehicle

#include <iostream>

C++语言程序设计实验报告

using namespace std;

class Vehicle

{

private:

float MaxSpeed;

float Weight;

public:

Vehicle(){}

~Vehicle(){}

void Stop() {cout<<"Stop!"<<endl;} void Run() {cout<<"Run!"<<endl;} };

//class Bicycle

class Bicycle: virtual public Vehicle

{

private:

float Height;

float Color;

public:

Bicycle(){}

~Bicycle(){}

};

//class Motorcar

class Motorcar: virtual public Vehicle {

private:

int SeatNum;

public:

Motorcar(){}

~Motorcar(){}

};

class Motorcycle:public Bicycle,public Motorcar {

public:

Motorcycle(){}

~Motorcycle(){}

};

int main()

{

Motorcycle mo;

mo.Run();

mo.Stop();

return 0;

}

C++语言程序设计实验报告

结果:

…… 此处隐藏:448字,全部文档内容请下载后查看。喜欢就下载吧 ……
C++语言程序设计实验报告 8.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/51038.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)