




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,3.1 类与对象概念的引入 3.2 类的声明 3.3 对象的声明 3.4 构造函数与析构函数 3.4.1 构造函数 3.4.2 析构函数 3.5 类的组合 3.6 静态成员 3.6.1 静态数据成员 3.6.2 静态成员函数,3.7 友元 3.7.1 友元函数 3.7.2 友元类 3.8 常对象、常成员函数与常数据成员 3.8.1 常对象 3.8.2 常数据成员 3.8.3 常成员函数 3.9 类的作用域及对象的生存期 3.9.1 类作用域 3.9.2 对象生存期 3.10 面向对象标记,第 3 章 类与对象,【 3.1 类与对象概念的引入】,类的声明形式如下: class 类名 public: 若干成员; protected: 若干成员; private: 若干成员; ;,【 3.2 类的声明】,例 3-1,public: /公有成员,声明类的外部接口 void setcylinder(double r,double h); /成员函数,用来设置圆柱体的半径 和高 double getradius(); /成员函数,用来获取圆柱体的半径 double getheight(); /成员函数,用来获取圆柱体的高 double volume(); /成员函数,用来计算圆柱体的体积 double surface_area(); /成员函数,用来计算圆柱体的表面 积 private: /私有成员 double radius; /数据成员,声明圆柱体的半径 double height; /数据成员,声明圆柱体的高 ;,例 3-2,它的一般格式如下: 返回值类型 类名:成员函数名(参数表) 函数体 ,例 3-4,例 3-5,double Cylinder:surfacearea() double area; area=2*3.1415926*radius*height+2*3.1415926*radius*radius; return area; ,例 3-6,例 3-7,例 3-8,例如: Cylinder cylinder1,cylinder2;,例如: Cylinder cylinder110;,【 3.3 对象的声明】,例如: cylinder1.volume(),例如: Cylinder cylinder1; cylinder1.radius=6.0;,例如: A aobject; aobject.X=5;,私有成员只能被类内的成员函数访问。,例 3-9,(续),(续),cout The surface area of the second cylinder is:t cylinder2.surface_area()endl; /计算对象cylinder2的表面积,并输出 ,(续),如: class A . class B . A a; . ;,如: class B; class A public: void fun(B b); . ; class B . ;,class B; /引用性声明 class A public: void fun(B b); /正确 private: B b; /错误,类B尚未定义 ; void A:fun(B b) coutb.getx; /错误 class B /声明类B,也即定义类B public: void setx(int a)x=a; int getx() return x; private: int x; ;,例如:下面的使用方法就是错误的。,【 3.4.1 构造函数】,【 3.4 构造函数与析构函数】,double getradius(); double getheight(); double volume(); double surface_area(); private: double radius; double height; ; Cylinder:Cylinder() radius=5.0; height=10.0; ,例 3-11,double getradius(); double getheight(); double volume(); double surface_area(); private: double radius; double height; ; Cylinder:Cylinder(double r,double h) radius=r; height=h; ,例如: Cylinder cylinder1(2.0,3.0); Cylinder cylinder1; /错误,没有提供用于初始化的实参,(续),Cylinder cylinder13= Cylinder (1.0,2.0),Cylinder(3.0,4.0),Cylinder(5.0,6.0);,例 3-12,(续),(续),其形式如下:类名:类名() ,(续),例 3-13,/EXAMPLE3_13.CPP #includeEXAMPLE3_13.H void main() A a; A b(10,10); ,【 3.4.2 析构函数】,例 3-14,组合类的构造函数应定义成如下形式: 类名:类名(形参表):对象1(形参表),对象2(形参表), ,对象n(形参表) 函数体 ,【 3.5 类的组合】,例 3-15,B() /析构函数 cout class B destructing endl; private: int b; ; class C public: C(int x,int y):a1(y) /构造函数 c=x; cout class C constructing without object b1 is not evaluated ; cout tt cendl; C(int x,int a,int b ); /构造函数 C() /析构函数 cout class C destructing endl; ,(续),private: int c; A a1; B b1; ; /EXAMPLE315.CPP #includeEXAMPLE315.H C:C (int x,int a,int b ):b1(a),a1(b) /定义构造函数 c=x; cout class C constructingtt cendl; void main() C c1(2,3); cout Object c1 of class C has been created endl; C c2(10,20,30); cout Object c2 of class C has been created endl; cout Destroy them endl; ,(续),(续),class A public: A (int x):a(x) cout class A constructingtt aendl; A () cout class A destructing endl; private: int a; ;,例如,【例3 - 15】中类A的声明就可以改为如下形式:,【 3.6.1 静态数据成员】,【 3.6 静态成员】,例 3-16, cout X= a t Y= bendl; void getSUM() sum=sum+a+b; cout SUM= sumendl; private: int a,b; static int sum; ; int A:sum=0; /静态数据成员的定义 /EXAMPLE3_16.CPP #includeEXAMPLE3_16.Hvoid main() A a1(1,2); a1.getXY(); a1.getSUM(); A a2(3,4); a2.getXY(); a2.getSUM(); ,(续),例如: #include class A public: static int x; ; int A:x=0; void main() coutA:xendl; A:x=10; coutA:xendl; ,形式如下: 类名:静态数据成员名,【 3.6.2 静态成员函数】,例 3-17, int A:y=0; void main() A a1(1,2); a1.fun1(); /通过对象名访问 A:fun2(a1); /通过类名访问 A a2(3,4); A:fun1(); /通过类名访问 a2.fun2(a2); /通过对象名访问 ,(续),【 3.7.1 友元函数】,【 3.7 友元】,例 3-18,int x; ; /EXAMPLE3_18.CPP #includeEXAMPLE3_18.H void A:memberfun(int x) B b(0) cout X= b.xendl; b.x=x; cout X= b.xendl; void fun() B b(10); cout X= b.xendl; void main() fun(); A a; a.memberfun(100); ,(续),【 3.7.2 友元类】,例如: class A public: A(int i,int j); . private: int a,b; A:A(int i,int j) a=i; b=j; A const a(1,2); const A b(3,4);,【3.8 常对象、常成员函数与常数据成员】,【 3.8.2 常数据成员】,例 3-19,【 3.8.3 常成员函数】,例 3-20,cout In void A:getAB() const endl; cout A= a t B= bendl; void main() A a(1,2); A const b(3,4); a.getAB(); b.getAB(); ,(续),例如:这里假设M是类A的一个成员。 (1)成员M出现在类A的某个成员函数中,且在该成员函数内没 有声明同名的标识符。 (2)成员M出现在a.M或A:M表达式中,其中a是类的一个对象。 (3)成员M出现在p-M这样的表达式中,其中p是指向类A的一 个对象的指针。,【 3.9.1 类作用域】,【 3.9.2 对象生存期】,【3.9 类的作用域及对象的生存期】,例如: #include int i=0; /变量i具有静态生存期,且具有文件作用域 void main() cout i= iendl; ,1. 静态生存期,例如: void fun() static int I=0; /变量I具有静态生存期,但其可见性是局部的 . ,2. 动态生存期,例 3-21,year=y; month=m; day=d; void Date:setDate(int y,int m,int d) year=y; month=m; day=d; void Date:showDate() const coutyear年month月day日endl; Date date
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品无人售货机营销方案
- 海边沙滩施工方案怎么写
- 咨询目标及咨询方案模板
- 长春网站建设方案咨询
- 清明线下活动策划方案
- 门市咨询方案设计
- 数据中心机房冷通道管理系统技术方案
- 时间小管家青少年小组计划书
- 绿海甜园三期绿色施工方案
- 旅游景区营销促销活动方案
- 26年中考数学几何模型解读与训练专题33圆中的重要模型之圆幂定理模型(学生版+名师详解版)
- 吉利汽车2025年并购后的企业转型与市场竞争力提升报告
- 煤气罐起火安全培训课件
- 攀岩课件教学课件
- GB/T 46150.1-2025锅炉和压力容器第1部分:性能要求
- 食品肉类供货合同范本
- SPSS操作课件教学课件
- 房屋土地兄弟分家协议书
- 四人合伙股份合同协议书
- 2021-2025年高考地理真题知识点分类汇编之宇宙中的地球
- 2025北京京剧院招聘工作人员10人备考试题及答案解析
评论
0/150
提交评论