C 介绍对象技术_第1页
C 介绍对象技术_第2页
C 介绍对象技术_第3页
C 介绍对象技术_第4页
C 介绍对象技术_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第18章 C+,一个更好的C; 介绍面向对象技术nC+对C的改进nC+标准库的头文件n内联函数的用法n引用的创建及操作n默认参数函数的用法 n函数重载n函数模板的创建及用法18.1 简介n最初导致C+诞生的原因是在Bjarne等人试图去分析UNIX的内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样将内核模块化。同年10月,Bjarne完成了一个可以运行的预处理程序,称之为Cpre,它为C加上了类机制。n在这个过程中,Bjarne开始思考是不是要开发一种新的语言,当时贝尔实验室对这个想法很感兴趣,就让Bjarne等人组成一个开发

2、小组,专门进行研究。 当时不是叫做C+,而是C with class,这是把它当作一种C语言的有效扩充。n由于当时C语言在编程界的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有两个问题最受关注:C+要在运行时间、代码紧凑性和数据紧凑性方面能够与C语言相媲美,但是还要尽量避免在语言应用领域的限制。在这种情况下,一个很自然的想法就是让C+从C语言继承过来,nBjarne等人具有先见之明,他为了避免受到C语言的局限性,参考了很多的语言,例如:从Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL获得了/注释,从Ada得到了模板

3、、名字空间,从Ada、Clu和ML取来了异常。18.3 简单的C+程序n输入输出流 iostreamn标准名字空间 stdnstd:coutnstd:cinn流插入运算符 nusing语句18.4 C+标准库nc+程序由类和函数构成。程序员可以自己编写每一个类或函数来构成C+程序,但大多数程序员会利用C+标准类库中已有的类和函数编程。因此,在C+的学习中需要学习两方面的知识:第一是学习C+语言本省,第二是学习如果使用C+标准库中的类和函数。18.5 头文件nnnnnn,nnnnnnnn18.6 内联函数n inlinen 内联函数可以减少程序执行时间,但会增加程序规模。n应该只将inline函

4、数应用于小的,经常使用的函数。n注意:n1、内联函数中不能有循环语句、嵌套if语句和switchcase语句。n2、内联函数不能是递归函数n3、内联函数应该在主函数之前声明。18.7 引用 referencen引用就是对象的另一个名字。n引用必须用该引用同类型的对象初始化。 int ival 1024 int &refVal = ival; /OK:refVal refers to ival int &refVal2; /error:a reference must be initalized int &refVal3 = 10; /error:initializer

5、must be an objectn引用被初始绑定到某一个变量之后,不能再绑定到另一个变量。nconst引用 : 指向const对象的引用 const int ival = 1024;const int &refVal = ival; /OK:both reference and object are constint &ref2 = ival; /error: nonconst reference to a const objectn非const 引用只能绑定到与该引用同类型的对象。const引用则可以绑定到不同但相关的对象或绑定到右值。引用作为函数参数n参数传递的两种方式:

6、n值传递n引用传递函数返回引用n函数可以返回引用,但是可能很危险。n规则:不能返回指向局部变量的指针,不能返回对局部变量的引用。n返回引用的函数可以作为左值。18.8 空形参列表18.9 函数的默认参数n在C+中,可以为函数指定默认参数。n注意:指定默认参数在函数声明中进行。n在函数声明中,指定一个不是最右的默认参数(即没有为该形参右侧的形参指定默认值)是语法错误。18.10 一元作用域运算符n在第5章第31节我们讨论过作用域规则,说明可以声明同名的局部变量和全局变量。在局部作用域中,全局变量被其同名局部变量隐藏。nC+提供了一元作用域运算符 : (Unary scope resolution operator),用于在含有与全局变量同名的局部变量的域中访问该全局变量。18.11 函数重载nC+中允许定义同名的函数,只要这些函数具有不同的形参列表即可(至少在形参类型、形参个数或形参类型的顺序上有区别)。这个功能称为函数重载(Function overloading)。n函数调用时,根据形参列表选择对应的函数运行。n注意:形参列表相同,只有返回类型不同的函数不是合法的函数重载。n注意:函数重载与带默认参数的函数同时出现时,会出现二义性。18.12 函数模板template 函数定义18.13 面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论