面向对象程序设计c++01.pptVIP

  • 2
  • 0
  • 约1.19万字
  • 约 80页
  • 2018-03-09 发布于河南
  • 举报
面向对象程序设计c01

第一章 C++语言基础 教材 《C++面向对象程序设计》 张俊 张彦铎主编 中国铁道出版社 2008年8月 《C++面向对象程序设计习题与实验指导》 课时安排与要求 课堂教学:周二(1-12周)共36学时 实验:26学时(2-14周) 要求1:认真阅读教材; 要求2:认真完成实验; 要求3:自觉课外实践。 平时成绩(30分)的计算 本章必须要掌握的内容 数据类型 变量 命名空间 左值与右值 内联函数 函数参数的默认值 数据类型 如何理解数据类型? 数据类型(Data Type) 所谓数据类型是一个值的集合以及在这些值上定义的一组操作的总称。通常数据类型可以看作是程序设计语言中已实现的数据结构。例:C语言的“整数类型”就定义了一个整数可取值的范围(其最大值INT-MAX依赖于具体机器)以及对整数可施加的加、减、乘、除和取模等操作。 按“值”是否可分解,可将数据类型划分为两类: ①原子类型: 其值不可分解。通常是由语言直接提供。例:C语言的整型、字符型等标准类型及指针等简单的导出类型; ②结构类型: 其值可分解为若干个成分(或称为分量)。是用户借助于语言提供的描述机制自己定义的,它通常是由标准类型派生的,故它也是一种导出类型。例:C的数组、结构等类型 变量 变量 变量定义 T t 变量赋值 复制初始化 = int a=2; 直接初始化 ( ) int a(2); 定义与声明 典型的C++程序通常会由好多文件组成。为了使不同的文件都可以访问同一个变量,C++会区分变量的声明(declarations)和定义(definitions)。 变量的定义(definitions)会为这个变量分配存储空间,并且可能会为其指定一个初始化的值。在程序里,一个变量必须有一个,也只能有一处定义(definitions)。 变量的声明(declarations)会将变量的类型和名称传达给程序。当然,定义(definitions)也是一种声明:当定义一个变量的时候,当然也声明了它的名称和类型。可以通过使用“extern”关键字来声明(declarations)一个变量,而不用定义(definitions)它。声明(declarations)的形式就是在对象(变量)的名字和类型前面,加上关键字“extern”:? ??????extern?int?i;???//?declares?but?does?not?define?i ??????int?i;??????????//??declares?and?defines?i extern?int?i;?? 带“extern”关键字的语句属于声明(declarations),不是定义(definitions),它不会给变量分配内存。实际上,它是说明程序中的某处包含这个变量的定义。一个变量可以在程序中被声明(declarations)多次,但是只能被定义(definitions)一次。 命名空间 随着程序设计实践的发展,程序规模越来越大,传统的模块化语言在大型系统面前已经显得力不从心。例如C语言其实只有很简单的模块支持,以源文件为编译单位,在大型程序中很容易出现名字冲突,因此程序员不得不在函数名和变量名之前添加各种前缀以示区分,使得程序很难读,增加了程序员的概念复杂性。Java 语言增加了对模块的支持,增加了包管理机制,使得模块管理非常方便。实际上面向对象语言一般用于构造大型程序,因此必须设计灵活有效的模块支持,语言才能得到广泛应用。 C++增加了名字空间作为语言的基本成分,对模块名字封装提供了支持。名字解析呈现出层次结构,利于程序的分别开发,程序员也不必绞尽脑汁的避免名字冲突,因此可以为函数或变量取更贴切的名字,从而有利于维护和调试。 现在的C++名字空间不是特别完善,首先名字空间作为作用域的一种没有访问权限的控制。如果能提供访问控制,则可以对模块进行更细粒度的组织,有利于信息隐藏和封装。 命名空间 C++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。 A程序员在文件作用域定义了函数f, B程序员在文件作用域也定义了同样的函数f,这两个标识符会发生冲突? 左值与右值 左值:是指能够出现在赋值运算符左边的表达式。 右值:是指只能出现在赋值运算符右边的表达式 内联函数 函数的调用机制 C++的函数调用过程,就是栈空间操作的过程。 栈是一种数据结构,这种数据结构遵循一个原则:先进后出。即先进栈的数据后出,而后进栈的数据先出。函数调用实际上是进行程序的跳转,在转去执行函数之前,应把现场保护起来,以备函数

文档评论(0)

1亿VIP精品文档

相关文档