C的面向对象编程.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文档。上传文档
查看更多
C的面向对象编程

第4章 C++的面向对象编程 C++是面向对象的程序设计语言,类是其实现面向对象的工具。类是面向对象程序设计(OOP)实现信息封装的基础,是C++语言最重要的特性。类是进行数据封装和数据保护的工具。本章主要知识点为: 类和对象的基本概念; 友元; 派生类; 继承与多重继承; 多态; 函数重载和运算符重载; 虚函数。 4.1 类和对象的基本概念 类是现实事物共有特征的抽象,而对象是类的具体实例。在面向对象的程序设计中,总是先声明类,再由类生成其对象。类是建立对象的模板,对象则是类的一个实例。 4.1.1 从结构到类 在C语言中有一种自定义的数据类型:结构体。结构体中可以函数不同的数据类型。C++语言把结构体进行扩充,它不仅可以含有不同的数据类型,而且可以含有函数。在C++中结构体的定义形式如下: struct 结构体名 { 成员表列 }变量名表列; struct是定义结构体的关键字,后面的结构体名是结构体的名称。在结构体中可以定义一个或多个成员变量或这函数。当然也可以不定义变量,此时称为空结构体。变量名表列是在定义结构体时,同时定义结构体变量。也可以不定义变量,在后面用到的地方在定义结构体变量。需要注意的是结构体右括号的变量名表列后面需要添加一个“;”。 4.1.2 成员函数的定义 类中含有两种成分:数据成员和函数成员。函数成员又称为成员函数。成员函数的定义有两种方式。 1.方式一 2.方式二 4.1.3 对象的定义与使用 对象是类的具体实例,定义好类以后必须去定义类的对象才可以真正的去实现类的功能。一般情况下对象的定义有下面两种情况。 1.声明类时直接定义对象 2.声明类之后再定义对象 4.1.4 对象的作用域 类是面向对象的体现,它具有一定的数据保护功能。类的作用域就是类的保护功能的机制。类的作用域是指类的声明部分中的一对花括号所形成的作用域。一个类的所有成员都在该类的作用域内。在上面的例子中已经看到类的私有成员变量不可以在类的外部所访问,因此需要定义一个公有成员函数间接的访问类的私有成员。 4.2 构造函数和析构函数 类是一种用户自定义的数据类型。定义一个类的对象时,编译程序需要为对象分配存储空间,进行必要的初始化工作。在C++中类的构造函数就是去实现这部分功能。 4.2.1 构造函数 构造函数是一种特殊的成员函数,它主要进行一些初始化工作。构造函数有一些基本性质: (1)构造函数和类的名字相同。 (2)构造函数不具有返回值。 (3)定义对象时,系统自动调用构造函数。 (4)构造函数是公有函数,但它不可以被显示调用。 4.2.2 默认参数的构造函数 对于有参数的构造函数,在定义对象时必须给构造函数传递参数。实际情况中,虽然有些构造函数有参数,但其参数是不变的,这就是默认参数的构造函数。此时构造函数的形式如下: 类名(函数名)(参数1=默认值,参数2=默认值,…..) 构造函数中的参数与普通函数的参数是一样的,所谓的默认参数即为该参数设置一个默认的取值。可以为全部或者部分参数设置默认值。 4.2.3 析构函数 析构函数也是一种特殊的成员函数,它执行和构造函数相反的工作。析构的特殊性质如下: (1)析构函数名称与类名相同,但前面加一个“~”。 (2)一个类中只有一个析构函数,并且该函数不带任何参数。 (3)当撤销对象时编译系统自动调用析构函数。 (4)若程序员没有定义析构函数,编译系统会生成析构函数。 4.2.4 重载构造函数与拷贝构造函数 C++允许重载构造函数,所谓的重载构造函数是指允许在类中有多个构造函数。当然这些构造函数肯定是有区别的。各个构造函数必须拥有不同的参数个数或者参数类型。 4.3 友元 类的主要特点是是数据隐藏,即类的私有成员只可以被类的内部使用,但是有的时候需要在类的外部访问类的私有成员,为此C++利用了一种新的机制——友元。 4.3.1 友元函数 友元函数不是类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有成员。在类的定义中声明友元函数时,需要在函数名前面加上friend。友元函数可以定义在类的内部,也可以在类的外部定义。 注意:友元在类的封装性中打了个孔,使封装性的强度下降,程序中如非必要,应尽量减少友元的使用。 4.3.2 友元成员 除了一般的函数可以作为类的友元外,一个类的成员函数也可以作为另一个类的友元。这样的函数不仅可以访问本类的所有成员,还可以访问其友元类的所有成员。需要注意的是当在一个类中的某个成员函数定义为另一个类的友元函数时需要首先定义此类。例如要定义类A的某个函数为类B的友元函数,那么需要先定义类B,然后再进行类A的成员函数与B友元的定义。 4.3.3 友元类 不仅函数可以作为一个类的友元,一个类也可以作为另一个类的友元。定义方法是在类的声

文档评论(0)

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

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

1亿VIP精品文档

相关文档