面向对象程序设计-7详解.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7讲 C++程序结构 2 本讲主要内容 友元 编译预处理命令 多文件结构和工程 深度探索 指针与引用 3 友元 友元是C++提供的一种破坏数据封装和数据隐藏的机制。 通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。 为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元。 友 元 4 友元函数 友元函数是在类声明中由关键字friend修饰说明的非成员函数,在它的函数体中能够通过对象名访问 private 和 protected成员 作用:增加灵活性,使程序员可以在封装和快速性方面做合理选择。 访问对象中的成员必须通过对象名。 友 元 5 例5-6 使用友元函数计算两点距离 #include iostream #include cmath class Point { //Point类声明 public: //外部接口 Point(int x=0, int y=0) : x(x), y(y) { } int getX() { return x; } int getY() { return y; } friend float dist(Point a, Point b); private: //私有数据成员 int x, y; }; 友 元 float dist( Point a, Point b) { double x = a.x - b.x; double y = a.y - b.y; return static_castfloat(sqrt(x * x + y * y)); } int main() { Point p1(1, 1), p2(4, 5); cout The distance is: ; cout dist(p1, p2) endl; return 0; } 36 7 友元类 若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。 声明语法:将友元类名在另一个类中使用friend修饰说明。 友 元 8 友元类举例 class A { friend class B; public: void display() { cout x endl; } private: int x; } class B { public: void set(int i); void display(); private: A a; }; 友 元 void B::set(int i) { a.x=i; } void B::display() { a.display(); } 39 10 友元关系是单向的 如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数却不能访问B类的私有、保护数据。 11 常类型 常类型的对象必须进行初始化,而且不能被更新。 常对象:必须进行初始化,不能被更新。 const 类名 对象名 常引用:被引用的对象不能被更新。 const 类型说明符 引用名 常数组:数组元素不能被更新。 类型说明符 const 数组名[大小]... 常指针:不能通过指针改变对象值,指针本身可以改变。 共享数据的保护 12 常对象举例 class A { public: A(int i,int j) {x=i; y=j;} ... private: int x,y; }; A const a(3,4); //a是常对象,不能被更新 共享数据的保护 13 用const修饰的对象成员 常成员函数 使用const关键字说明的函数。 常成员函数不更新对象的数据成员。 常成员函数说明格式: 类型说明符 函数名(参数表)const; 这里,const是函数类型的一个组成部分,因此在实现部分也要带const关键字。 const关键字可以被用于参与对重载函数的区分 通过常对象只能调用它的常成员函数。 常数据成员 使用const说明的数据成员。 共享数据的保护 14 例5-7 常成员函数举例 #includeiostream using namespace std; class R { public: R(int r1, int r2) : r1(r1), r2(r2) { } void print(); void print() const; private: int r1, r2; }; 共享数据的保护 void R::print() { cout r1

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档