第2章类与对象分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档