类与对象最最经典的解释.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
类与对象最最经典的解释

第2章 类与对象 2.1 类的含义与表述 一个类是对一种概念的描述,或者说是对某一类具体事物的抽象。 2.2 类定义的语法规则 类定义包含类头和类体两部分,形式如下: 类有三种访问控制: private 访问控制符 protected public 使用说明: 类的三个访问控制符可以任意顺序出现任意次。 不能在类声明中给数据成员赋初值。 protected用于继承 类的作用域 类的作用域指在类的声明中的一对花括号所形成的作用域。 在类的作用域内部或外部访问同一个名字(变量或函数)的效果是不同的。 2.3 类对象定义 一个自定义的类类型与内置类型在语法上并没有什么差异。例如 : Date d1, d2, *pd 对象和指针之间的运算与简单变量相同,对象间可以直接赋值: pd = d1; d2 = d1; 当一个对象赋值给另一个对象时,所有的数据成员都会逐位复制。 2.4 成员访问 1. 在类的内部 在类的内部(主要是类的方法中)访问类的成员时只要直接使用成员名即可,无论属性还是方法都如此。 2. 在类的外部 一般形式: 对象名.数据成员名 对象名.成员函数名(实参表) 若定义的是指向对象的指针,则访问此对象的成员时,要使用“-”操作符。 2.5 构造函数与对象初始化 解决对象初始化问题的方法是为类定义一种特殊的方法:构造函数,语法形式为: 类名(参数列表) { //初始化语句 } 1. 构造函数的特殊性 语法上,构造函数名与类名必须相同,且不能有返回类型(也意味着无返回值),除此之外与普通方法相同,如可以有参数列表、可以重载和设置参数的缺省值等。 构造函数在生成对象时由系统自动调用。 构造函数必须是公有的,否则系统也无法在构造对象时调用它。 2. 缺省的构造函数 在C++中,每个类必须有构造函数,否则不能生成类对象。 如果用户没有定义,则系统自动生成一个构造函数,称为缺省构造函数。 缺省构造函数没有任何参数,形式为:类名( ); 需要特别注意的是,只要用户自己定义了一个构造函数,无论有无参数,系统将不再提供缺省构造函数。 3. 构造函数的重载与对象定义 创建一个对象意味着一次构造函数调用,因此,对象后面的实参数列表必须与某一个构造函数的形参列表相对应,使得系统能找到对应的构造函数并调用它,否则将产生找不到适当匹配的错误。 特殊情况说明: 构造函数只有一个参数,则下面两个对象定义语句的作用相同 Student s2(Tom); Student s2 = “Tom”; //初始化而非赋值 无参构造函数定义对象时不能带有括号 Student s1(); 2.6 拷贝构造函数 构造函数的参数可以是任何类型参数,甚至可以将自己类对象的引用作为参数,称它为拷贝构造函数。 拷贝构造函数有两个含义: 首先,它是一个构造函数,当创建一个新对象时,系统自动调用它; 其次,它将一个已经定义过 的对象的数据成员逐一对应地复制给新对象。 如果一个类没有定义拷贝构造函数,C++可以为该类产生一个缺省的拷贝构造函数。 拷贝构造函数的作用: 1 创建一个新对象,并将一个已存在的对象复制到这个新对象。 2 对象本身做参数。 3 函数返回一个对象。 一般来说,如果一个对象需要独占资源时必须定义拷贝构造函数,这里的资源指动态内存、窗口句柄和文件句柄等。 利用用户自定义拷贝构造函数实现的拷贝构造称为“深拷贝”,而采用系统缺省的拷贝构造函数实现的拷贝称为“浅拷贝”。 2.7 析构函数与对象拆除 在一个对象生命期结束时就会被拆除。例如,一个局部定义的对象在程序流程离开此局部区域时被拆除,而一个动态建立的对象在用delete释放时被拆除。拆除对象时系统要自动调用一个类的特殊方法——析构函数。 如果一个类没定义析构函数,系统会自动生成一个,它的主要工作是将为对象分配的内存资源归还给系统。如果在拆除类的对象时需要加入一些特殊的行为则需要自己定义析构函数。 class A { ... public: A(...); //构造函数声明 ~A( ); //析构函数声明 ... }; 1、析构函数不能有返回类型,也没有任何参数(因为无法指定实参数),自然也就不能重载。 2、对于一个简单的类,系统提供的缺省析构函数可以很好地工作,但如果在一个对象工作期间占用了系统资源,则必须定义析构函数释放这种资源, 一般地讲,如果一个类需要定义拷贝构造函数,也就需要定义一个析构函数。 此外,利用delete运算符删除对象时自动调用析构函数也是delete运算符与free函数的主要区别。 2.8 静态成员 一个类的属性或方法可以采用static进行修

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档