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

c++实验报告 继承与派生

来源:网络收集 时间:2026-04-29
导读: 昆明理工大学信息工程与自动化学院学生实验报告 ( 201 —201 学年 第 二 学期 ) 课程名称:C++程序设计 开课实验室: 年 月 日 实验目的 1.学习定义和使用类的继承关系,定义派生类。 2.熟悉不同继承方式下对基类成员的访问控制。 3.学习利用虚基类解决

昆明理工大学信息工程与自动化学院学生实验报告

( 201 —201 学年 第 二 学期 )

课程名称:C++程序设计 开课实验室: 年 月 日

实验目的

1.学习定义和使用类的继承关系,定义派生类。

2.熟悉不同继承方式下对基类成员的访问控制。

3.学习利用虚基类解决二义性问题。

题目1:

定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函 数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会 有问题吗?编程试试看。

实验步骤:

编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成 员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:

-1-

error C2248:’age’:cannot access private member declared in class’Animal’ error C2248:’age’:cannot access private member declared in class’Animal’ 把age改为公有成员变量后重新编译就可以了。程序名:lab7—1.cpp。

源程序1

/****** lab7-1.cpp ******/

#include <iostream.h>

class Animal

{

//protected:

int age;

public:

Animal(int a)

{ age=a; cout<<"我是基类构造函数,我创建基类对象age="<<age<<endl; } ~Animal() { } int getage() const { } void setage(int a) { age=a; -2- cout<<"我是基类析构函数,我释放基类对象age="<<age<<endl; return age;

}; }

class Dog:public Animal

{

int color;

public:

Dog(int a=10,int c=3):Animal(a),color(c)

{ //setage(a); cout<<"我是子类构造函数,我创建子类对象color="<<color<<" age="<<getage()<<endl;

};

void main()

{Dog a;

}

运行结果截图

-3- } ~Dog() { } cout<<"我是子类析构函数,我释放子类对象color="<<color<<endl;

题目2:

定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass, 观察构造函数和析构函数的执行情况。

实验步骤:

编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7—2.cpp。

源程序2

/****** lab7-2.cpp ******/

#include<iostream>

using namespace std;

class BaseClass

{

protected:

int number;

public:

BaseClass() { } ~BaseClass() { } -4- number=1; cout<<number<<" 基类构造函数"<<endl; number=4; cout<<number<<" 基类析构函数"<<endl;

};

class DerivedClass:public BaseClass

{

public:

};

void main()

{

}

运行结果截图

-5- DerivedClass() { } ~DerivedClass() { } number=3; cout<<number<<" 子类析构函数"<<endl; number=2; cout<<number<<" 子类构造函数"<<endl; cout<<"执行情况:"<<endl; DerivedClass a;

题目3:

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

实验步骤:

编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7—3.cpp。

编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。

这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。 源程序3

/****** lab7-3.cpp ******/

#include<iostream>

using namespace std;

class Vehicle

{

int MaxSpeed,Weight;

public:

Vehicle() -6-

}; } inline run() { } inline stop() { } cout<<"stoped!"<<endl; cout<<"The MaxSpeed is 100km/h!"<<endl; cout<<"The Weight is 5000kg!"<<endl;

class Bicycle:public Vehicle

{

public:

};

class Motorcar:public Vehicle

-7- inline Height() { } cout<<"The Height is 2m!"<<endl;

public:

{

}

};

class Motorcycle:public Bicycle,public Motorcar {

public:

{

};

void main()

{

inline SeatNum() cout<<"The number of seat is 7!"<<endl; Motorcycle() } cout<<"This is Motorcycle!"<<endl; Vehicle a; a.run(); a.stop(); Bicycle b; b.Height(); -8-

} Motorcar c; c.SeatNum(); c.stop(); Motorcycle d;

运行结果截图

-9-

…… 此处隐藏:1001字,全部文档内容请下载后查看。喜欢就下载吧 ……
c++实验报告 继承与派生.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1529300.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)