面向对象程序设计一深入类与对象分析.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计一深入类与对象分析

深入类与对象——友元(friend) 友元类:如果类B是类A的友元,则类B的所有成员函数都可以访问类A的私有成员。反之不成立(即友元关系是单向的)。 声明方法: class friend 类名 特别提醒:由于友元的使用会破坏类的封装性,除非万不得已的情况,最好不要使用。 深入类与对象——再议构造函数 思考.1:要实现一个表示一条线段的类。 由于两点可以表示一条线段,因此我们可以使用构造好的Point类来方便的实现 class Line { public: Line(); int GetLength(); private: Point m_ptBegin; Point m_ptEnd; }; 此两成员均为Point类的对象,怎么构造呢? 如果由Line类负责构造,此构造函数应该怎么写呢? 深入类与对象——再议构造函数 思考.2:假设Line类已经可用,考虑一下如何使用 情况1:假设要创建一条从点(3,5)到点(10, 22)的线 Line line(3, 5, 10, 22); Line(int _beginX, int _beginY, int _endX, int _endY); 怎么实现,并构建两个点呢? 答案是利用初始化列表!!! Line::Line(int _beginX, int _beginY, int _endX, int _endY) : m_ptBegin(_beginX, _beginY), m_ptEnd(_endX, _endY) {} 调用了构造函数 深入类与对象——再议构造函数 情况2:创建一条从点(3,5)到点(10, 22)的线,但先创建这两个点。 Point pt1(3, 5), pt2(10, 22); ,pt2 pt1 Line line( ); Line(Point pt_begin, Point pt_end); Line::Line(Point pt_begin, Point pt_end) : m_ptBegin(pt_begin), m_ptEnd(pt_end) {} 调用了拷贝构造函数 Line(Line oldLine); Line::Line(Line oldLine) : m_ptBegin(oldLine.m_ptBegin), m_ptEnd(oldLine.m_ptEnd) {} 深入类与对象——再议构造函数 复习:简单的Line类 //in “Line.h” #include “Point.h” class Line { public: Line(int _beginX, int _beginY, int _endX, int _endY); Line(Point pt_Begin, Point pt_end); int GetLength(); private: Point m_ptBegin; Point m_ptEnd; }; 深入类与对象——再议构造函数 //in “Line.cpp” #include “Line.h” #include cmath Line::Line(int _beginX, int _beginY, int _endX, int _endY) : m_ptBegin(_beginX, _beginY), m_ptEnd(_endX, _endY) {} Line::Line(Point pt_Begin, Point pt_End) : m_ptBegin(pt_Begin) m_ptEnd(pt_End) {} int Line::GetLength() { int xLength = m_ptEnd.GetX() – m_ptBegin.Get

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档