- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软工130_2016011313_李海峰_实验二
实 验 报 告
课程名称 C++ 程 序 设 计
实验项目 深入理解C++的面向对象编程
实验仪器 PC 兼 容 机
系 别 软 件 工 程
专 业 软 件 工 程
班级/学号 软工1301 2013011313
学生姓名 李海峰
实验日期 2014/12/26
成 绩 _______________________
指导教师 郝 保 水
一、实验目的
理解继承概念,能够根据题目,正确地对事物进行抽象,并建立其继承关系。
理解C++内存模型。
进一步掌握C++,能够编写稍微复杂的程序。
实验题目
使用VC2010里面的调试工具,分析和解决388页6题,并指出每个类对象的大小和内存布局。(提示:观察内存地址依次点击调试菜单、窗口子菜单、内存等)。
此题能够帮助大家进一步理解C++对象模型。建议先从单继承开始,然后逐步复杂化。例如:定义class B:
class B
{
public:
int a;
public:
B(){a=3;}
};
然后定义class A:
class A:public B
{
…
};
仔细分析B和A的内存模型,然后借助VC工具,看是否是这样的。
解答:
f1 f2 i f3 k B::m f4 C::m n f5 p q A √ √ √ B √ √ √ √ √ C √ √ √ √ √ √ √ D √ √ √ √ √ √ √ √ √ 对象a1的大小为4,b1的大小为12,c1的大小为20,d1的大小为28.
内存布局如下图所示:
代码:
#includeiostream
using namespace std;
class A
{
public:
void f1();
A();
protected:
void f2();
private:
int i;
};
A::A()
{
i = 1;
}
class B:public A
{
public :
void f3();
int k;
B();
private:
int m;
};
B::B()
{
k = 2;
m = 3;
}
class C :protected B
{
public :
void f4();
C();
protected:
int m;
private:
int n;
};
C::C()
{
k = 2;
m = 3;
n = 4;
}
class D :private C
{
public:
void f5();
D();
protected:
int p;
private:
int q;
};
D::D()
{
k = 2;
m = 3;
p = 4;
q = 5;
}
int main()
{
A a1;
B b1;
C c1;
D d1;
cout A: sizeof(a1) endl;
cout B: sizeof(b1) endl;
cout C: sizeof(c1) endl;
cout D: sizeof(d1) endl;
return 0;
}
分析总结:
在派生类中,成员有4种不同的访问属性:
公共的,派生类内和派生类外都可以访问
受保护的,派生类内可以访问,派生类外不能访问,其下一层的派生类可以访问。
私有的,派生类内可以访问,派生类外不能访问。
不可访问的,派生类内和派生类外都不能访问。
391页11题。
此题帮助大家进一步理解继承,并具有初步编程能力。
运行结果:
代码:
#includeiostream
#includestring
using namespace std;
class Date
{
public:
void display();
Date(int y, int m, int d):year(y), month(m), day(d){};
Date();
private:
int year;
int month;
int day;
};
void Date::display()
{
cout The date is year / month / day endl;
}
Date::Date()
{
year = 1000;
month =
您可能关注的文档
最近下载
- CJJT258-2017 住宅专项维修资金管理信息系统技术规范.docx VIP
- 电缆管施工方案.docx
- 凿岩台车、潜孔钻司机岗位安全生产责任制.doc VIP
- 地理丨广东省广州市2022届高三上学期12月调研测试地理试卷及答案.doc VIP
- JMP入门与提高学习资料.pptx VIP
- CJJT257-2017 住宅专项维修资金管理基础信息数据标准.docx VIP
- 概率论与数理统计教程(华东师范大学).docx VIP
- 分离工程绪论培训课件.ppt VIP
- 阅读理解之七选五五种考法(讲案)解析版-2024年高考英语一轮复习知识清单(全国通用).pdf VIP
- 大厦写字楼招商部流程管理手册.doc VIP
文档评论(0)