




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+类目录1注意事项22构造函数和拷贝构造函数22.1构造函数22.2拷贝构造函数22.3两者关系23 对象23.1动态对象23.2对象引用34存取权限34.1成员对象的存取控制权34.2组合类成员对象的访问权限34.3子类继承35静态和常数据成员35.1静态数据成员35.2常数据成员46友元46.1友元函数46.2友元类47继承与派生57.1构造函数57.2多继承的调用顺序57.3虚基58虚函数68.1虚函数的定义格式:68.2重载时的虚函数69抽象类79.1纯虚函数79.2抽象类71注意事项 1) 定义数据成员时不能给数据成员赋初值,这是因为类只是一种类型,类中的数据成员不占内存空间。2) 在正在定义的类中,不能定义该类的类型的变量,只能定义该类类型的指针成员以及该类类型的引用成员,这是因为该类型还没有完整的定义。3) 程序运行时,系统只为各对象的数据成员分配内存空间,该类的对象共享类的成员函数定义与成员函数分配的空间。4) const 对象调用内部的函数必须是const的,不管你是不是真的会修改成员变量.2构造函数和拷贝构造函数2.1构造函数当没有构造函数时,系统产生一个默认的构造函数,但是它什么都不做。2.2拷贝构造函数拷贝构造函数是指与类同名,形参是本类的对象的引用的函数。当没有定义拷贝构造函数时,系统会自动产生一个默认拷贝构造函数。默认拷贝构造函数只做浅拷贝,即将一个对象的个成员值赋给此对象的个成员,但当此类存在指针成员时,并不会将此指针成员所指向的区域赋值给此对象的指针成员。Class A;A a1,a2;a2 = a1;对象之间的赋值相当于各成员变量的一一赋值,但不调用拷贝构造函数。2.3两者关系当重新定义拷贝构造函数时,默认拷贝构造函数和默认构造函数就不存在了,如果此时调用默认构造函数就会出错。在重新定义构造函数时,默认构造函数就不存在了,但默认拷贝构造函数就不存在了。3 对象3.1动态对象动态对象是指编程者随时动态建立并可随时消失的对象。格式: 对象指针 = new 类名(初值表);delete 对象指针; 或: 对象指针 = new 类名数组大小;delete 对象指针;3.2对象引用除非是作为函数参数与函数返回值,对象的引用在定义时必须要初始化。4存取权限4.1成员对象的存取控制权存取属性意义可存取对象Public公开级该类成员以及所有对象Protected保护级该类及其子类成员Private私有级该类成员4.2组合类成员对象的访问权限组合类是指包含其他类的对象的类。 类内对象的成员组合类内的对象publicprotectedprivatePublicPublic不可访问不可访问ProtectedProtected不可访问不可访问privateprivate不可访问不可访问4.3子类继承 基类属性继承法方式publicprotectedprivatePublicPublicProtected不可访问ProtectedProtectedProtected不可访问privateprivatePrivate不可访问5静态和常数据成员5.1静态数据成员静态数据成员必不可少的两部分:类内声明、类外初始化,格式为:Static 数据类型 静态数据成员;数据类型 类名:静态数据成员 = 初始值;/注意此时不加static,必须是文件作用域中此类类外的某个地方,只能初始化一次。如:Class APrivate:Static int a;Int A:a = 2;5.2常数据成员常数据成员的定义格式:数据类型 const 数据成员名;或Const 数据类型 数据成员名;常数据成员的初始化只能通过构造函数的初始化类表进行。如Class APrivate:Const int &r;Const int a;Public:A(int i):a(i),r(a);6友元6.1友元函数友元函数声明格式:Friend 返回类型 函数名(形参);友元函数可以存取类的任何权限的成员。友元函数不是类的成员,所以不用通过对象调用此函数。访问权限与友元函数无关,所以友元函数的声明可放在类任意地方,但一般都放在最后。6.2友元类一个类可以被声明为另一个类的友元,被声明的类成为友元类。若A类为B类的友元类,则A的所有成员函数都是B类的友元函数,都可以访问B类的任何数据成员。7继承与派生7.1构造函数派生类(即子类)的构造函数一般格式如下:派生类名(参数总表):基类名1(参数表1),基类名m(参数表m),成员对象名1(成员对象参数表1),成员对象名n(成员对象参数表n)派生类新增成员的初始化;7.2多继承的调用顺序在多层继承中,处于同一层的个基类构造函数的调用顺序取决于定义该派生类时所指定的各基类的先后顺序,与派生类构造函数定义时初始化列表中的顺序无关。7.3虚基如图类B1、B2继承了类A,类C继承了类B1、B2,则这样在C中有两个A的拷贝,为了避免这样情况,出现了虚基类。其继承格式如下:Class 派生类名: virtual 继承方式 基类名构造函数,虚基类定义了带参数的构造函数,则只有用于建立派生类对象的那个最远派生类的构造函数才调用虚基类的构造函数,而派生类的其它非虚基类中所列出的对这个虚基类的构造函数的调用被忽略。如下图,类C是最远的派生类。当建立类C时,先调用虚基类A的构造函数,而再调用B1,B2的构造函数,此时的虚基类构造函数被忽略。C+规定,虚基类的构造函数先于非虚基类的构造函数的执行。8虚函数8.1虚函数的定义格式:Virtual 函数类型 函数名(形参类表)函数体;虚函数实现动态联编,例如:程序class Apublic: virtual void fun()coutA.fun()endl;class B:public A public: void fun()coutB.fun()fun(); return 0;class Apublic: void fun()coutA.fun()endl;class B:public A public: void fun()coutB.fun()fun(); return 0;输出A.fun()B.fun()B.fun()A.fun()B.fun()A.fun()8.2重载时的虚函数当在派生类中定义了虚函数的重载函数,但并没有重新定义虚函数时,与虚函数同名的重载函数覆盖了派生类中的虚函数。此时试图通过派生类对象、指针、引用调用派生类的虚函数就会出现错误。当在派生类中未重新定义虚函数,虽然虚函数被派生类继承,但通过基类、派生类类型指针、引用调用虚函数时,不实现动态联编,调用的是基类的虚函数。举例:程序class Apublic: virtual void fun()coutA.fun()endl;class B:public A public: void fun()coutB.fun()endl;class C:public B public: void fun()coutC.fun()fun();C c;B *bp; bp = &c; bp-fun() return 0;class Apublic: void fun()coutA.fun()endl;class B:public A public: void fun()coutB.fun()endl;class C:public B public: void fun()coutC.fun()fun();C c;B *bp; bp = &c; bp-fun() return 0;输出A.fun()B.fun()B.fun()C.fun()A.fun()B.fun()A.fun()B.fu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 火锅餐饮行业2025年火锅餐饮市场竞争力研究报告
- 智能家居系统集成项目在2025年智能家居租赁市场的应用可行性分析
- 老龄化趋势下2025年老年长期照护服务模式与社区养老机构服务模式创新报告
- 食品添加剂在食品色泽改善中的安全性评估与合规性分析报告
- 2025年元宇宙社交平台界面设计创新与实践案例分析报告
- 医疗行业大数据隐私保护在2025年医疗数据安全风险评估与控制策略中的应用报告
- 有机食品市场细分领域投资机会与风险评估报告
- 2025年医药企业研发外包(CRO)与临床试验国际化合作报告001
- 2025年国际教育交流项目学生跨文化心理调适与心理健康研究报告
- 2025年北京市燕山区七下英语期中达标检测试题含答案
- 园艺论文开题报告范文
- 数据质量管理实施手册
- 林业工程开工申请
- 清华大学《大学物理》各章节习题库及答案合集
- 《设备找正找平》课件
- 2024年度小红书商业MCN机构经营洞察报告
- 宠物医院服务行业可行性分析报告
- 输液港的输液与维护
- 口腔科护理人文关怀
- 高等教育信息化建设方案
- 人工神经网络理论及应用课件第6章-反馈神经网络
评论
0/150
提交评论