当前位置: 首页 > news >正文

国际交流合作网站建设方案最基本的网站设计

国际交流合作网站建设方案,最基本的网站设计,网站做跳转在后天那个文件里做,做毕业设计的参考文献网站CSDN的各位友友们你们好,今天千泽为大家带来的是燕山大学-面向对象程序设计实验-实验5 派生与继承:单重派生-实验报告,接下来让我们一起进入c的神奇小世界吧,相信看完你也能写出自己的 实验报告!本系列文章收录在专栏 燕山大学面向对象设计报告中 ,您可以在专栏中找…
CSDN的各位友友们你们好,今天千泽为大家带来的是
燕山大学-面向对象程序设计实验-实验5 派生与继承:单重派生-实验报告,
接下来让我们一起进入c++的神奇小世界吧,相信看完你也能写出自己的 实验报告!
本系列文章收录在专栏 燕山大学面向对象设计报告中 ,您可以在专栏中找到其他章节
如果对您有帮助的话希望能够得到您的支持和关注,我会持续更新的!

实验六 派生与继承—多重派生

🚩6.1 实验目的

1.理解多重派生的定义;

2.理解多重派生中构造函数与析构函数的调用顺序;

3.理解多重派生中虚拟基类的作用;

🚩6.2 实验内容

🚩6.2.1程序阅读

1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

class CBase1{public:CBase1(int a):a(a){cout<<"base1 structure..."<<endl;}~CBase1(){cout<<"base1 destructure..."<<endl;}void print(){cout<<"a="<<a<<endl;}protected:int a;};class CBase2{public:CBase2(int b):b(b){cout<<"base2 structure..."<<endl;}~CBase2(){cout<<"base2 destructure..."<<endl;}void print(){cout<<"b="<<b<<endl;}protected:int b;};class CDerive : public CBase1, public CBase2{public:CDerive(){cout<<"derive structure..."<<endl;}~CDerive(){cout<<"derive destructure..."<<endl;}void print(){CBase1::print();CBase2::print();b1.print();b2.print();cout<<"c="<<c<<endl;}private:CBase1 b1;CBase2 b2;int c;};void main(){CDerive d;d.print();}

问题一:改正以上程序中存在的错误,并分析该程序的输出结果。

答:(1)没有引用头文件,且未声明命名空间。
(2)CBase1和CBase2类缺少默认的构造函数。
分析:main函数创建CDerive类对象d时,CDerive类继承了CBase1和CBase2类,因此输出了前两行。在CDerive类中又有两个成员对象b1和b2,再次调用CBase1和CBase2的构造函数,故有3、4行。随后,CDerive构造函数中有输出第5行内容。6-10行为CDerive::print()函数中内容,由于在调用时均为赋值,因此变量内容不确定。后5行为析构,与构造过程相反。

2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include "iostream"class CBase{public:CBase(int a):a(a){}int a;};class CDerive1 : public CBase{public:CDerive1(int a):CBase(a){}};class CDerive2 : public CBase{public:CDerive2(int a):CBase(a){}};class CDerive : public CDerive1,public CDerive2{public:CDerive(int a,int b):CDerive1(a),CDerive2(b){}};void main(){CDerive d(1,2);cout<<d.a<<endl;}

问题一:在不改变原有程序意图的前提下,分别用三种方法改正以上程序,并使程序正确输出。

答:(1)方法一:使用虚继承

#include <iostream>using namespace std;class CBase   {public:CBase(int a):a(a){}int a;};class CDerive1 : virtual public CBase{public:CDerive1(int a):CBase(a){}};class CDerive2 :virtual public CBase{public:CDerive2(int a):CBase(a){}};class CDerive : public CDerive1,public CDerive2{public:CDerive(int a,int b):CDerive1(a),CDerive2(b),CBase(b){}};int main(){CDerive d(1,2);cout<<d.a<<endl;return 0;}

2)添加输出函数print()

#include <iostream>using namespace std;class CBase {public:CBase(int a):a(a){}int a;int print(){return a;}};class CDerive1 : public CBase{public:CDerive1(int a):CBase(a){}};class CDerive2 :public CBase{public:CDerive2(int a):CBase(a){}};class CDerive : public CDerive1,public CDerive2{public:CDerive(int a,int b):CDerive1(a),CDerive2(b){}int print(){return CDerive1::print();}};int main(){CDerive d(1,2);cout<<d.print()<<endl;return 0;}

(3)获取变量时限定作用域

#include <iostream>using namespace std;class CBase {public:CBase(int a):a(a){}int a;};class CDerive1 : public CBase{public:CDerive1(int a):CBase(a){}};class CDerive2 :public CBase{public:CDerive2(int a):CBase(a){}};class CDerive : public CDerive1,public CDerive2{public:CDerive(int a,int b):CDerive1(a),CDerive2(b){}int getA(){return CDerive1::a;}};int main(){CDerive d(1,2);cout<<d.getA()<<endl;return 0;}

🚩6.2.2 程序设计

1.建立普通的基类building,用来存储一座楼房的层数、房间数以及它的总平方数。建立派生类house,继承building,并存储卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的数目。设计一主函数来测试以上类的用法。

答:

#include<iostream>using namespace std;class building{protected:int floor;int room_num;int area;public:building(int a,int b,int c):floor(a),room_num(b),area(c){}void buildingInfo(){cout<<"* 楼层:"<<floor<<endl;cout<<"* 房间数:"<<room_num<<endl;cout<<"* 面积:"<<area<<endl;}};class house:public building{private:int sleep_num;int wash_num;public:house(int a,int b,int c,int d,int e):building(a,b,c),sleep_num(d),wash_num(e){}void houseInfo(){cout<<"住宅:"<<endl;buildingInfo();cout<<"* 卧室数量:"<<sleep_num<<endl;cout<<"* 浴室数量:"<<wash_num<<endl;}};class office:public building{private:int fire_num;int phone_num;public:office(int a,int b,int c,int d,int e):building(a,b,c),fire_num(d),phone_num(e){}void officeInfo(){cout<<"办公室:"<<endl;buildingInfo();cout<<"* 灭火器数量:"<<fire_num<<endl;cout<<"* 电话数量:"<<phone_num<<endl;}};int main(){house h(10,5,300,2,1);office o(5,10,500,20,10);h.houseInfo();o.officeInfo();return 0;}

🚩6.3思考题

1.按照下图的类层次结构编写程序,定义属于score的对象c1以及类teacher的对象t1,分别输入每个数据成员的值后再显示出这些数据。

答:

#include<iostream>#include<cstring>#include<string>using namespace std;class person{protected:string name;int id;public:person(string a,int b):name(a),id(b){}void personInfo(){cout<<"* 姓名:"<<name<<endl;cout<<"* ID:"<<id<<endl;}};class teacher:public person{private:string degree;string dep;public:teacher(string a,int b,string c,string d):person(a,b),degree(c),dep(d){}void teacherInfo(){cout<<"教师信息:"<<endl;personInfo();cout<<"* 学历:"<<degree<<endl;cout<<"* 部门:"<<dep<<endl;}};class student:public person{private:int old;int sno;public:student(string a,int b,int c,int d):person(a,b),old(c),sno(d){}void studentInfo(){cout<<"学生信息:"<<endl;personInfo();cout<<"* 年龄:"<<old<<endl;cout<<"* 学号:"<<sno<<endl;}};class stud{protected:string addr;string tel;public:stud(string a,string b):addr(a),tel(b){}void studInfo(){cout<<"* 住址:"<<addr<<endl;cout<<"* 电话:"<<tel<<endl;}};class score:public student,public stud{private:double math;double eng;public:score(string a,int b,int c,int d,string e,string f,double s1,double s2):student(a,b,c,d),stud(e,f),math(s1),eng(s2){}void scoreInfo(){studentInfo();studInfo();cout<<"* 数学成绩:"<<math<<endl;cout<<"* 英语成绩:"<<eng<<endl;}};int main(){score a("张三",10086,20,2020123456,"四川省成都市犀安路999号","15866668888",88.8,98.7);a.scoreInfo();teacher b("李四",10010,"博士","计算机学院");b.teacherInfo();return 0;}

本篇文章就到这里啦,祝你学习进步!

http://www.dt0577.cn/news/28429.html

相关文章:

  • wordpress仿站价格河北百度推广客服电话
  • 5g天天奭5g天天运动网站代码全网营销推广案例
  • 房产中介网站模板小红书关键词热度查询
  • 自己建设网站在哪里建设成都门户网站建设
  • 想让一个网站上线需要怎么做全国十大婚恋网站排名
  • 网页设计html代码大全brseo发包软件
  • 2019为赌博网站做代理被判缓刑谷歌浏览器手机版官网下载
  • 兰州中川国际机场电话windows7优化大师官方下载
  • 公司的网站建设价格百度竞价sem入门教程
  • 高校官方网站建设网络营销的四个步骤
  • 橙子建站收费标准下载百度官方网站
  • 做网站+广告费+步骤今日头条官网首页
  • 做招聘和求职都需要哪些网站百度山西授权代理
  • 建设网站公司宝鸡谷歌全球营销
  • 网站设计与开发培训外贸订单一般在哪个平台接?
  • 定州网站建设服装市场调研报告
  • 宽屏网页设计尺寸长沙排名优化公司
  • 网站建立的步骤苏州百度推广排名优化
  • 织梦网站模板官网南宁网站建设网络公司
  • 乌鲁木齐市米东区建设局网站网站优化查询
  • 大港做网站公司百度的竞价排名是哪种方式
  • 成都网站建设科技公百度竞价托管运营
  • 有没有什么做h5的网站网络项目推广平台
  • 视频网站策划提高工作效率的方法
  • 厦门网站建设价格武汉网站排名提升
  • 小企业网站建设怎么做好深圳十大教育培训机构排名
  • 电子商务html网站模板跟我学seo
  • 网站上传教程哪个合肥seo好
  • 哪个网站可以免费做国外长沙网络推广公司
  • wordpress wp_head优化关键词方法