- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计教程8要点
C++程序设计教程(第二版) 第八章 类 Chapter 8 Class 类 类是一种可以作为交易的概念代码.类是自定义的数据类型.类与应用程序不同,类的功能虽然独立,但不能独立启动,就象汽车零件那样. 类机制 要通过编程的方法来维护类的数据表达,值范围和操作并不是简单的,因为要限制一些操作只能让类自己来做,以免发生问题时,无人敢对其负责. 类机制就是通过语言的规定性来实现一些技术,使类具有数据封装,信息屏蔽,多态等特征,起到数据类型的作用,而达到方便编程的目的. 第八章内容 8.1 从结构到类 结构体 举例(f0801) 单纯堆积数据空间构造的类型,不含有相关操作 所有相关操作都必须由使用结构体的程序员自己承担,不便于代码的移植和重用 仅是一个不完整的自定义数据类型 8.1 从结构到类 类 概念:不但描述数据空间,还描述其操作的自定义类型 定义方法 class Date { private: int year,month,day; public: void setdate(int,int,int); …… }; 8.1 从结构到类 类 举例(f0802) 成员函数和成员变量 成员权限 private public Protected 类定义的两部分:类定义本体和成员函数定义 一般情况下类的定义和应用程序为多文件结构 8.1 从结构到类 类 对象和变量 变量:由内部数据类型或衍生的结构类型所产生的实体 对象: 由类产生的实体,本质上,变量也是对象,只不过粗糙一点罢了 8.1 从结构到类 类和结构体的比较 结构体的开放性 类的封闭和自成一体性 类的使用使得程序开发的流程分工变得极为清晰 8.2 成员函数 成员函数与普通函数的区别 成员函数属于类, 成员函数定义是类设计的一部分, 其作用域是类作用域. 而普通函数一般为全局函数 成员函数的操作主体是对象,使用时通过捆绑对象来行使其职责, 而普通函数被调用时没有操作主体 成员函数的定义方法 类内部定义 类外部定义 合理选择上述两种方法的原则 成员函数的内联性问题 成员函数可以在类内,也可以在类外定义,若在类内定义,则默认为内联函数.但编译器对内联的接受自有其原则. 成员函数的定义方法 class Date { int year, month, day; public: void set ( int y, int m, int d ) // 默认内联 { year=y; month=m; day=d; } … }; inline bool Date::isLeapYear ( ) // 显式内联 { return ! ( year%400 ) || !(year%4) year%100; } … 访问成员函数的方式 对象方式 Date d; d.set(2005,12,5); … 对象指针方式 Date* dp = new Date; dp-set(2005,12,5); // … delete dp; 常成员函数与函数的常量参数 常成员函数 对捆绑的对象, 不允许写操作 函数的常量参数 对传递的参数, 不允许写操作 例如: bool Date::comp(const Date a)const{ year = 2005; // error: 常成员函数捆绑的对象 a.year = 2003; // error: 常量对象 return year==b.yaer month==a.month day==a.day; } 常成员函数的服务对象一般是类的使用者 重载成员函数 类的成员函数允许进行重载 重载的处理规则和以前相同 举例(f0804) 8.3 操作符 操作符定义的函数重载特征 操作符在类中定义的目的:方便编程和直观上的理解 操作符定义就是函数定义,调用操作符就是调用函数 举例:f0805 Point operator+(const Point a, const Point b) { Point s; s.set(a.x + b.x, a.y + b.y); return s; } Point p, q; p.set(3, 2); q.set(1, 5); Point r = p + q; // p + q 等价于 operator+(p, q) 8.3 操作符 操作符在类中定义的作用: 让编译器
文档评论(0)