面向对象实验四类的继承
admin
2024-01-29 03:34:17
0

一、实验目的 

通过以一个类为基类来为其建立派生类的方法,掌握面向对象程序设计中类的继承性、层次性等特性以及派生类中给基类构造函数传递参数的方法,掌握基类中不同访问权限的成员在派生类中的访问权限。 继承是C++语言的一种重要机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,这使得程序员只需在新类中定义已有类中没有的成分来建立类。理解继承是理解面向对象程序设计所有方面的关键。 能利用现有的类建立新类,能理解继承如何提高软件的可重用性,理解多态性对于继承的意义,掌握多态的工作原理。 派生类(子类)继承它父类的属性和操作,在继承中,基类的 private 对所有的外界都屏蔽(包括自己的派生类),基类的protected控制符对应用程序是屏蔽的,但对其派生类是可访问的。

存取方式与继承关系

存取方式

public

protected

private

public

public

protected

private

protected

protected

protected

private

private

private

private

private

二、实验内容 

  使用 Visual C++ 6.0 建立一个类A,然后派生出两个类B和C。

三、实验要求 

   1、要求类A的公有段、保护段、私有段分别都有对应的数据和成员函数;

   2、分别以public和private的方式派生出两个类B、C;

   3、通过B和C的构造函数传递参数给基类A的构造函数,验证它们之间的调用关系和调用顺序;

   4、在这两个派生类中实现对基类成员的访问,在基类的基础上增加新的成员函数;

   5、编制主程序验证派生类的正确性。

四、实验课后要求 

 1、整理课内上机的结果、体会;

2、完成实验报告。 

实验代码:

//shuiguo.h

#ifndef SHUIGUO_H_

#define SHUIGUO_H_

class shuiguo//基类,水果

{

private:

int sum;//总数

int kind;//种类数量

public:

shuiguo():sum(0),kind(0){}

shuiguo(int s, int k) :sum(s), kind(k){}

virtual void display();

void change(int,int);

};

class banana:public shuiguo//香蕉,具有has-a关系的公有继承

{

private:

float cal;//卡路里

public:

banana() :shuiguo(), cal(0.0){}

banana(int s, int k, float c) :shuiguo(s, k), cal(c){}

virtual void display();

};

class maochong :private shuiguo//毛毛虫,具有is-a关系的私有继承

{

private:

int number;//毛虫数量

public:

maochong() :shuiguo(), number(0){}

maochong(int s, int k, int n) :shuiguo(s, k), number(n){}

virtual void display();

};

#endif

//shuiguo.cpp

#include

#include"shuiguo.h"

using namespace std;

void shuiguo::display()

{

cout << "总数: " << sum << "   " << "种类:  " << kind << endl;

}

void shuiguo::change(int a,int b)

{

sum = a;

kind = b;

}

void banana::display()

{

shuiguo::display();

cout << "卡路里:  " << cal << endl;

}

void maochong::display()

{

shuiguo::display();

cout << "总数;  " << number << endl;

}

//user.cpp

#include"shuiguo.h"

#include

using namespace std;

int main()

{

//一般对象实现

shuiguo a;

a.display();

a.change(100,10);

a.display();

shuiguo b(200, 20);

b.display();

banana c;

c.display();

c.change(100, 10);

c.display();

banana d(200, 20, 3);

d.display();

maochong e;

e.display();

maochong f(100, 10, 100);

f.display();

//指针对象实现(简化版)

shuiguo *g;

g= new shuiguo[1];

g[0]=shuiguo(100,10);

g[0].display();

banana *l;

l = new banana[1];

l[0] = banana(200, 20, 3);

l[0].display();

maochong *k;

k = new maochong[1];

k[0] = maochong(100, 10, 100);

k[0].display();

return 0;

}

相关内容

热门资讯

原创 4... 写在文章前的声明:在本文之前的说明:本文中所列的投资信息,只是一个对基金资产净值进行排行的客观描述,...
胜宏科技港股大涨49% 做完英... 记者 陈月芹 4月21日,全球AI算力板龙头胜宏科技(02476.HK)登陆港交所,上市首日股价大涨...
永赢基金:聚焦“科技新锐”,科... 数据来源:Wind,时间统计区间为2025/1/1-2026/4/21,指数过往表现不预示未来,不构...
五大阅读趋势显现!当当网发布2... 在第31个世界读书日即将来临之际及首个全民阅读活动周期间,当当网正式发布2026国民阅读洞察报告。 ...
业绩逐季回暖 老百姓大药房一季... 上证报中国证券网讯(记者 夏子航)4月22日晚,老百姓大药房发布2025年年报和2026年一季报。今...
中国20强城市大洗牌:苏州接近... 中国的城市经济竞争格局一直在变化,每年发布的GDP数据都会对城市经济实力进行重新排列。2025年榜又...
直击金宏气体股东会:预期年内氦... 《科创板日报》4月22日讯(记者 郭辉)金宏气体日前举行2025年度股东大会。会上该公司审议了公司年...
5月1日起,俄据悉将叫停哈萨克... 据行业消息人士透露,俄罗斯将于5月1日起停止经友谊管道转运哈萨克斯坦输往德国的石油,相关调整计划已送...
深化具身智能生态布局 京东携手... 4 月 22 日,京东与国内消费级人形机器人头部企业松延动力正式达成三年期战略合作。双方将围绕产品研...
原创 帮... 先问你一个问题,美伊停火今晚到期,按常理避险情绪该升温,黄金应该涨吧?结果恰恰相反——原油涨了,黄金...
300295、600889,将... 三六五网、南京化纤,将被*ST。 公司股票自4月23日开市起停牌一天,于4月24日开市起复牌并实施退...
能源大变天!外媒:羡慕中国的石... 这一次油价突破 110 美元的能源危机,着实魔幻。如果放在十年前,没人会相信中国能在这场风波中获利,...
黄金涨跌两难,现在还能上车吗? 中新网4月22日电(记者 左雨晴) 四月以来,美伊局势反复拉扯,美联储降息预期一变再变。黄金价格在4...
“我身体健康”,库克现身员工大... 当地时间4月21日,受苹果官宣CEO换届影响,公司股价盘中下探超2%,总市值失守4万亿美元关口,收盘...
库克留下一个悬念 工程师能否拯救创新节奏? 听筒Tech(ID:tingtongtech)原创 文 | 赵 森 ...
探索消费信贷与社交支付深度融合... 腾讯这一金融产品再添新功能,4月19日,北京商报记者注意到,微信分付灰度测试转账功能引发热议,在向微...
土耳其主要银行股指早盘下跌2% 每经AI快讯,4月20日,土耳其主要银行股指早盘下跌2%。 每日经济新闻
好用的OTA代运营源头厂家 在如今竞争激烈的酒旅行业中,OTA代运营服务成为了众多酒店、民宿提升竞争力的关键。但市场上的代运营厂...
成都五一出游全国热门第三 “五一”假期临近,同程旅行最新发布的《2026“五一”旅行趋势报告》显示,今年“五一”期间成都同时位...