- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C实验六const对象和const成员、友元
评语:
评分项目 评分内容 分值 评分结果 预习情况 是否完成预习工作。要求按实验指导书进行预习、并完成实验报告初稿、编写程序。 20 实验方案 实验方案是否可行。要求目的、任务明确、原理清楚、步骤可操作、对实验过程数据有记录方案、对可能的错误有预备方案。 30 实验过程
与结果 实验结果是否正确。要求完成实验过程中的数据记录、记录要完整和准确、内容要详细,实验结果要与预期的正确结果一致。 35 实验结论 实验结论是否正确。要求根据实验原理对实验过程中的数据、实验结果进行分析,得出实验结论。 15 总 分 100
指导教师(签名)
年 月 日
说明:指导教师评分后,实验报告交院(系)办公室保存。
实验6 const对象和const成员、友元
1.实习目的及要求
1)掌握coust对象、 coust成员函数和coust成员数据的使用;
2)掌握友元函数的定义和使用。
2.预习
1)预习coust对象及const成员的定义、使用等相关知识;
2)预习友元的概念、友元成员函数、友元类等相关知识。
预习知识总结:
const
声明格式 注意 常对象 类名 const 对象名 必须初始化,且不能改变(即:不能再次被赋值);常对象只能调用常成员函数 类 常成员函数 类型说明符 函数名(参数表)const 不能更新对象的数据成员,也不能调用该类中没有const修饰的成员函数。 常数据成员 Const 类型说明符 数据名 任何函数不能对常数据成员赋值。构造函数对它初始化只能通过初始化列表 类的友元
友元 通过友元关系一个普通函数或者类的成员函数可以访问封装于另外一个类中的数据 友元函数 在它的函数体中可通过对象名访问类的私有和保护成员(关键) 友元类 若A类为B类的友元类,友元类A的所有成员函数都自动成为B类的友元函数,都可以访问B类私有和保护成员 UML语言
例子 友元函数 friend+fDist(a:Piont ,b:Point ):float 友元类 类A 类B 常成员函数 const+print():void 常数据成员 -r:const int -a:const int 疑问:常引用和常对象的UML语言怎么表示
3.实验内容
3.1分析下面的程序,观察编译程序时会出现什么样的错误。
#includeiostream.h
class Sample
{
int n;
public:
Sample(int i)
{n=i;}
void setvalue(int i)
{n=i;
}
void display()
{
coutn=nendl;
}
};
void main()
{
const Sample s(5);
s.setvalue(8);
s.display();
}
分析:明显在main部分,对象s被定义被初始化为一个对象常量,其成员数据是不可以被setvalue修改的。编译的时候出现了如下的错误:
error C2662: setvalue : cannot convert this pointer from const class Sample to class Sample Conversion loses qualifiers
error C2662: display : cannot convert this pointer from const class Sample to class Sample Conversion loses qualifiers
所以应该修改为:
void main(){
const Sample s(5);
Sample s1(5);
s.display();
s1.setvalue(8);
s1.display();
}
这样的话,s1的成员函数才可以修改成员数据的值。
3.2 编写并调试程序
1).编写一个程序求直角坐标中一个点到直线的距离。要求设计一个点类point,含有两个公有成员数据x和y,代表点的坐标。另一个类为直线类line,它有三个私有成员数据a,d,c。分别代表直线方程ax+by+c=0的系数。在类line中设计一个友元函数distance计算一个点到直线的距离。点(x,y)到直线ax+by+c=0的距离distance的计算公式如下:
请根据下面给出的部分程序编写直线类line及其成员函数,以组成完整的程序。
#includeiostream.h
#includemath.h
c
您可能关注的文档
最近下载
- 吉林省中药软片炮制规范.pptx VIP
- 名著阅读《湘行散记》七年级语文上册部编版(共9页).docx VIP
- 《白洋淀纪事》阅读测试题含答案(推荐).docx VIP
- 必考名著《白洋淀纪事》导读+知识点汇总.pdf VIP
- CQJZDE-2008 重庆市建筑工程计价定额.docx VIP
- 人教部编版七年级语文上册名著选读《湘行散记》导读.doc VIP
- 重庆市建筑工程计价定额CQJZDE-2008.doc
- 部编版七上语文名著导读《朝花夕拾》、《白洋淀纪事》、《湘行散记》知识点练习(含答案).docx VIP
- 超星尔雅学习通《大学生劳动教育》章节测试含答案.docx VIP
- 七年级上册名著《湘行散记》知识点+习题(共12页).docx VIP
文档评论(0)