收藏 分享(赏)

C++类的总结.doc

上传人:j35w19 文档编号:6621779 上传时间:2019-04-18 格式:DOC 页数:7 大小:53.03KB
下载 相关 举报
C++类的总结.doc_第1页
第1页 / 共7页
C++类的总结.doc_第2页
第2页 / 共7页
C++类的总结.doc_第3页
第3页 / 共7页
C++类的总结.doc_第4页
第4页 / 共7页
C++类的总结.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、 1 / 7C+类目录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

2、 纯虚函数 79.2 抽象类 72 / 71 注意事项 1) 定义数据成员时不能给数据成员赋初值,这是因为类只是一种类型,类中的数据成员不占内存空间。2) 在正在定义的类中,不能定义该类的类型的变量,只能定义该类类型的指针成员以及该类类型的引用成员,这是因为该类型还没有完整的定义。3) 程序运行时,系统只为各对象的数据成员分配内存空间,该类的对象共享类的成员函数定义与成员函数分配的空间。4) const 对象调用内部的函数必须是 const 的,不管你是不是真的会修改成员变量.2 构造函数和拷贝构造函数2.1 构造函数当没有构造函数时,系统产生一个默认的构造函数,但是它什么都不做。2.2 拷贝

3、构造函数拷贝构造函数是指与类同名,形参是本类的对象的引用的函数。当没有定义拷贝构造函数时,系统会自动产生一个默认拷贝构造函数。默认拷贝构造函数只做浅拷贝,即将一个对象的个成员值赋给此对象的个成员,但当此类存在指针成员时,并不会将此指针成员所指向的区域赋值给此对象的指针成员。Class A;A a1,a2;a2 = a1;对象之间的赋值相当于各成员变量的一一赋值,但不调用拷贝构造函数。2.3 两者关系当重新定义拷贝构造函数时,默认拷贝构造函数和默认构造函数就不存在了,如果此时调用默认构造函数就会出错。在重新定义构造函数时,默认构造函数就不存在了,但默认拷贝构造函数就不存在了。3 对象3.1 动态

4、对象动态对象是指编程者随时动态建立并可随时消失的对象。格式: 对象指针 = new 类名( 初值表);delete 对象指针;3 / 7或: 对象指针 = new 类名数组大小 ;delete 对象指针;3.2 对象引用除非是作为函数参数与函数返回值,对象的引用在定义时必须要初始化。4 存取权限4.1 成员对象的存取控制权存取属性 意义 可存取对象Public 公开级 该类成员以及所有对象Protected 保护级 该类及其子类成员Private 私有级 该类成员4.2 组合类成员对象的访问权限组合类是指包含其他类的对象的类。类内对象的成员组合类内的对象public protected pri

5、vatePublic Public 不可访问 不可访问Protected Protected 不可访问 不可访问private private 不可访问 不可访问4.3 子类继承基类属性继承法方式public protected privatePublic Public Protected 不可访问Protected Protected Protected 不可访问private private Private 不可访问5 静态和常数据成员5.1 静态数据成员静态数据成员必不可少的两部分:类内声明、类外初始化,格式为:Static 数据类型 静态数据成员;4 / 7数据类型 类名:静态数据成员

6、 = 初始值;/ 注意此时不加 static,必须是文件作用域中此类类外的某个地方,只能初始化一次。如:Class APrivate:Static int a;Int A:a = 2;5.2 常数据成员常数据成员的定义格式:数据类型 const 数据成员名;或Const 数据类型 数据成员名;常数据成员的初始化只能通过构造函数的初始化类表进行。如Class APrivate:Const int 6 友元6.1 友元函数友元函数声明格式:Friend 返回类型 函数名 (形参 );友元函数可以存取类的任何权限的成员。友元函数不是类的成员,所以不用通过对象调用此函数。访问权限与友元函数无关,所以友

7、元函数的声明可放在类任意地方,但一般都放在最后。6.2 友元类一个类可以被声明为另一个类的友元,被声明的类成为友元类。若 A 类为 B 类的友元类,则 A 的所有成员函数都是 B 类的友元函数,都可以访问 B 类的任何数据成员。5 / 77 继承与派生7.1 构造函数派生类(即子类)的构造函数一般格式如下:派生类名 (参数总表 ):基类名 1(参数表 1), ,基类名 m(参数表 m),成员对象名 1(成员对象参数表 1), ,成员对象名 n(成员对象参数表 n)派生类新增成员的初始化;7.2 多继承的调用顺序在多层继承中,处于同一层的个基类构造函数的调用顺序取决于定义该派生类时所指定的各基类

8、的先后顺序,与派生类构造函数定义时初始化列表中的顺序无关。7.3 虚基C l a s s AC l a s s B 1 : p u b l i c A C l a s s B 2 : p u b l i c AC l a s s C P u b l i c B 1 , p u b l i c B 2如图类 B1、B2 继承了类 A,类 C 继承了类 B1、B2,则这样在 C 中有两个 A 的拷贝,为了避免这样情况,出现了虚基类。其继承格式如下:Class 派生类名 : virtual 继承方式 基类名构造函数,虚基类定义了带参数的构造函数,则只有用于建立派生类对象的那个最远派生类的构造函数才调

9、用虚基类的构造函数,而派生类的其它非虚基类中所列出的对这个虚基类的构造函数的调用被忽略。如下图,类 C 是最远的派生类。C l a s s AC l a s s B 1 : v i r t u a l p u b l i c A C l a s s B 2 : v i r t u a l p u b l i c AC l a s s C P u b l i c B 1 , p u b l i c B 2当建立类 C 时,先调用虚基类 A 的构造函数,而再调用 B1,B2 的构造函数,此时的虚基类构造函数被忽略。C+规定,虚基类的构造函数先于非虚基类的构造函数的执行。6 / 78 虚函数8.1

10、虚函数的定义格式:Virtual 函数类型 函数名 (形参类表 )函数体 ;虚函数实现动态联编,例如:程序 class Apublic: virtual void fun()coutfun();return 0;class Apublic: void fun()coutfun();return 0;输出 A.fun()B.fun()B.fun()A.fun()B.fun()A.fun()8.2 重载时的虚函数当在派生类中定义了虚函数的重载函数,但并没有重新定义虚函数时,与虚函数同名的重载函数覆盖了派生类中的虚函数。此时试图通过派生类对象、指针、引用调用派生类的虚函数就会出现错误。当在派生类中未

11、重新定义虚函数,虽然虚函数被派生类继承,但通过基类、派生类类型指针、引用调用虚函数时,不实现动态联编,调用的是基类的虚函数。举例:程序 class Apublic: virtual void fun()coutfun();C c;B *bp; bp = bp-fun()return 0;class B:public A public:void fun()coutfun();C c;B *bp; bp = bp-fun()return 0;输出 A.fun()B.fun()B.fun()C.fun()A.fun()B.fun()A.fun()B.fun()9 抽象类9.1 纯虚函数定义格式:Virtual 函数类型 函数名 (形参列表 ) = 0;9.2 抽象类特点:1) 抽象类至少要包含一个纯虚函数。2) 当派生类实现了抽象基类的所有纯虚函数,则为具体类,否则仍为抽象类。3) 抽象类不能定义对象,不能用作参数类型、函数返回类型、强制转换类型。4) 可以定义抽象类的指针和引用。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报