- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章类与对象分析
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 浅拷贝与深拷贝 让IT教学更简单,让IT学习更有效 2.3 构造函数和析构函数 浅拷贝 拷贝构造函数中若只完成数据成员本身的赋值,称为“浅拷贝” 深拷贝 这种将所有数据都进行复制的拷贝构造函数称之为“深拷贝”。 浅拷贝案例代码 [具体查看教材例2-14] 让IT教学更简单,让IT学习更有效 2.3 构造函数和析构函数 例2-14,调用析构函数进行对象资源释放后,程序无法正常终止。 思考 两个对象的m_pCarname指向同一个空间 会因为对已释放的空间进行二次释放而出错 原因在于,创建对象myseccar时使用的拷贝构造函数中仅对指针变量本身进行了赋值操作,而没有让对象的m_pCarname指针指向独立空间。 让IT教学更简单,让IT学习更有效 2.3 构造函数和析构函数 深拷贝案例代码 如例2-15所示 具体解决方案: [具体查看教材例2-15] 让IT教学更简单,让IT学习更有效 2.3 构造函数和析构函数 不同的对象的pcarname指向不同的空间 mynewcar对象释放自己独有空间 示意图: 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 共享 很多时候为了描述较复杂的情况,类中的数据成员可能需要在多个对象间共享,也可能在对象中只进行读取不被修改,这种情况就会用到一些特殊的成员变量。 例如:设计学生类时,可以在空间内部定义一个属性用于统计学生的总人数。在对象以外的空间定义一个表示总人数的变量让所有对象共享 学生总数 学生对象1 学生对象2 姓名 年龄 姓名 年龄 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 静态成员 C++中将使用static修饰的数据成员称为静态成员 定义静态成员语法格式 static 类型标识符 静态数据成员名称; 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 静态成员的访问和初始化 当静态成员被声明具有public属性,则与普通的public数据成员类似,可以通过对象在类外完成访问 通过对象在类外完成访问 1 访问形式 对象.公有静态数据成员 = xx; 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 静态成员的访问和初始化 由于静态数据成员不属于任何对象,访问静态数据成员有其独特的方式,可以通过类名直接进行访问。 过类名直接进行访问 2 访问形式 类名::静态数据成员名 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 静态成员的访问和初始化 若想对静态数据成员进行初始化,需要在类外通过“类名::静态数据成员 = 初值”的方法提供初值。 静态数据成员初始化 类名::静态数据成员 = 初值; 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 例如:定义Student类,其中包含一个静态成员 class Student { public: Student(); ~Student(); static int s_nTotalnum; private: char m_gName[20]; int m_nID; }; int Student::s_nTotalnum = 0; 静态数据成员 [具体查看教材例2-16] 常数据成员 希望类中的数据成员在对象使用中不被改变,可以把这样的成员定义为常数据成员。C++中将使用const修饰的数据成员称为常数据成员。 定义常数据成员语法格式 class 类名 { const 数据类型 数据成员; }; 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 常数据成员的初始化 常数据成员必须进行初始化并且不能被更新。若想对常数据成员进行初始化只能通过初始化表完成,不能在构造函数内部进行赋值。 常数据成员初始化 类名::类名(形参列表):常数据成员1(值), 常数据成员2(值) { 构造函数体 } 让IT教学更简单,让IT学习更有效 2.4 类中特殊的成员变量 例如:定义一个Circ
您可能关注的文档
最近下载
- GB_T 9441—2021《球墨铸铁金相检验》标准解读.pdf VIP
- 西师大版六年级上册数学第一单元 分数乘法 测试卷带答案下载.docx VIP
- 3篇关于全国质量月活动策划方案.docx VIP
- 青岛版(五四制)(2024)科学一年级下册4 制作方向辨识盘 教学设计.docx VIP
- 2025北京海淀高一(下)期末英语试卷含答案.pdf VIP
- 5.3《阳燧照物》(教案)-【中职专用】高二语文(高教版2023拓展模块下册).docx VIP
- 基于Matlab的智能家居照明控制系统的设计.doc VIP
- 关于IPRAN特性与实现.ppt VIP
- 2025零碳园区建设方案.docx
- 建筑工程图集 12S108-2:真空破坏器选用与安装.pdf VIP
文档评论(0)