




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计 C 第1章从C到C C 过程化程序设计 C 语言的词法系统 1 字符集大小写英文字母 数字字符 其他字符2 词法规则标识符关键字new delete friend inline operator private protectedpublic this virtual运算符分隔符 空格 逗号 分号 冒号常量 const注释符 C 程序结构特点 C 程序由类和函数构成一个C 程序由若干文件构成 每个文件由若干类和函数构成 C 中的函数可以定义在类之外 称为一般函数 也可以定义在类中 称为类的成员函数 语句是组成程序的基本单元 变量和常量 基本数据类型新增布尔型 说明符为bool 取值为true和false 自定义数据类型类类型变量新的变量声明及初始化方法 inta 5 inta 5 常量的定义格式const constinta 5 运算符和表达式 C 中新增运算符 作用域运算符new动态内存分配delete内存回收 和 成员指针选择运算符C 中大多数运算符可以重载运算符的优先级和结合性表达式 类型转换 类型定义 输入 输出 C 的输入输出操作由I O流类库提供 键盘输入使用标准输入流对象cin和提取运算符 通过这种方法可以从cin的输入流中获取不同类型的数据 运算符可以连用 从同一个输入流中提取多个数据项给其后的多个变量赋值 输入流的多个数据项用分隔符隔开 屏幕输出使用标准输出流对象cout和插入运算符 可以输出不同类型的数据 命名空间和标准库 命名空间 namespace 是C 为解决命名冲突而引入的一种机制 标准库 StandardLibrary 是每个C 编译器都必须支持的类型和函数的集合 C 的标准库包括C标准程序库 I O流 string 国际化 数值处理 诊断支持以及标准模板库STL 容器 算法和迭代器 命名空间和标准库 标准库内容众多 为避免命名冲突 标准库中的内容都被放入命名空间std中 C 标准发布之前 不带命名空间的旧式C 库被应用于大量程序的开发 为兼容这些代码 C 标准委员会为std命名空间中的标准库命名了新的头文件名 命名规制是 去掉现有C 头文件名中的 h C标准库头文件同样去掉 h 并在名字前加一个 c 旧式的C 头文件依然被众多编译器支持 只是不在命名空间std中 命名空间和标准库 当使用标准库中的名称时 必须显式地表达出使用的是命名空间std中的名称 可用域运算符 限定 std cout HelloWorld std endl 或使用语句usingnamespacestd 这样 命名空间std中定义的所有名称都可直接使用 不需域运算符限定 函数 函数的定义和说明C 规定 定义函数时必须指出该函数的返回值类型 没有返回值时 用void进行说明 函数的默认参数C 语言允许在函数说明或定义时给一个或多个参数指定默认值 使函数调用更加方便灵活 intfun inta intb 5 intc 8 函数 在设置和使用默认参数时要注意 指定默认值 要从参数表的右端开始 在指定了默认值的参数的右边不允许出现没有指定默认值的参数 在调用函数时 给定的实参值将取代默认值 没给出实参值则使用参数的默认值 如果一个函数需要说明 默认的参数值应该出现在函数的说明而不是函数定义中 如果函数没有说明则可将默认参数值设置在函数的定义中 默认值可以是数值 表达式 全局变量 但不可以是局部变量 因为默认参数的函数调用是在编译时确定的 而局部变量在编译时无法确定 函数 includevoidfun inta 1 intb 2 intc 3 cout a a b b c c endl voidmain fun fun 9 fun 4 5 fun 7 8 9 运行结果 a 1 b 2 c 3a 9 b 2 c 3a 4 b 5 c 3a 7 b 8 c 9 函数 函数的调用方式传值调用传址调用引用调用函数的嵌套和递归 函数 内联函数函数调用需要一定的时间和空间消耗 对于规模较小且调用频繁的函数可以通过内联函数改善其效率 编译时 编译器将程序中出现的内联函数的调用表达式用该内联函数的函数体进行替换 函数 定义内联函数的方法是在函数头前加关键字inline includeinlineintcube int intn voidmain for inti 1 i 10 i intp cube int i cout p endl inlineintcube int intn returnn n n 使用内联函数要注意 内联函数内不允许含有循环和开关语句 内联函数的函数体以1 5行为宜 类内定义的成员函数都是内联函数 函数 重载函数C 中引入重载函数 允许一个函数名对应多个不同的函数实现 例如 intabs int longabs long doubleabs double 这些函数名称一样 但在参数个数 参数类型等方面会存在不同之处 函数 调用重载函数时选择的原则重载函数至少在参数类型 参数个数或参数顺序上存在不同 仅仅在返回值类型上不同是不够的 intfun int double intfun double int voidfun int double 第二个函数可以和其他两个重载 而第一个和第三个不可重载 函数 重载函数的选择顺序 先查找严格匹配的再通过内部类型转换查找可以匹配的最后通过用户自定义的强制类型转换查找 例如 重载函数f1有两种形式 voidf1 int voidf1 double 可以如下调用 f1 1 严格匹配voidf1 int f1 1 5 严格匹配voidf1 f1 double f1 m 内部转换匹配voidf1 int f1 double 5 用户强制转换匹配voidf1 double 引用 引用的概念引用是某个变量或对象的别名 建立引用时 要用某个变量名或对象名对其初始化 于是该引用便绑定在该变量或对象上 引用不是变量或对象 不占内存空间 引用只是作为某个变量或对象的别名使用 引用的值是被引用变量的值 引用的类型是被引用的变量的类型 对引用的修改就是对它所绑定的变量或对象的修改 引用 建立引用的格式其中 ra是引用名 即ra是变量a的别名 符号 是说明符 用在引用名前 说明ra是一个引用 注意区分与取地址操作 的差别 取地址符 是运算符 用在变量名前面 引用 引用和指针的区别指针是变量 引用不是变量 指针可以被引用 而引用不可以 指针可以作为数组元素 但不能建立引用数组 可以有空指针 不能有空引用 引用一旦初始化 就被绑定在初始化的那个变量或对象上 不再改变 引用的应用 引用作为函数参数引用作为函数参数可以达到指针作为函数参数的目的 不拷贝副本 在被调用函数中修改调用函数中的实参值 引用作为函数参数时 调用函数的实参与一般传值调用一样使用变量名或对象名 比使用指针作为参数时实参要用地址形式的可读性更好 引用的应用 main inta 5 b 6 swap a b swap voidswap intx inty intt t x x y y t 传值voidswap int x int y intt t x x y y t 传地址voidswap int 传引用 引用的应用 引用作为函数的返回值一般函数返回值时都要建立临时变量 即用来拷贝副本 具体实现是先将返回表达式的值传递给临时变量 返回主函数后 再将临时变量的值传递给接收函数返回值的变量 函数返回引用时 并不产生副本 而是将其返回值直接传递给接收函数返回值的变量 但要注意避免返回值是局部变量的情况 返回引用的调用函数可以作为左值进行计算 includeboolFactor int int boolFactor intn int 引用的应用 includeint 从键盘输入若干字符 统计其中数字字符和非数字字符的个数 includeint voidmain inttn 0 tc 0 charch cout ch while ch fun ch tn tc cin ch cout Numbercharacters tn endl cout Othercharacters tc endl 引用的应用 用const限定引用当一个函数的参数被设定为const的时候 其值就不允许被修改 使用const限定引用参数 则可以保护调用函数的实参值不会被修改 同时又可以不拷贝副本 动态内存分配和回收 new和delete堆内存 动态内存 在运行时申请内存 用户内存 代码区 全局数据区 栈区 堆new和delete的格式创建 销毁一变量 new数据类型 初始值 delete指针名 int p p newint deletep 创建 销毁一数组 new数据类型 长度 delete 指针名 int p p newint 30 delete p 动态内存分配和回收 说明new类似于函数malloc 分配堆内存 但比malloc 更简练 ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际贸易实务模拟练习题(附答案)
- 医师定期考核临床模拟练习题及参考答案
- 2025中小学教师入编考试公共基础知识题库与答案
- 2025年《学前教育学》期末测试题及答案
- 2024年湖南公务员考试申论真题及答案
- 标准基础知识培训教材课件
- 2024年院感培训考核试题附答案
- 化验室专业知识培训简讯课件
- 上海某超级豪宅设计方案
- 呼吸机应用试题(附答案)
- 广东省特种设备检测研究院东莞检测院招考【共500题含答案解析】模拟检测试卷
- 变压器有载分接开关的试验课件
- 独股一箭2010年20w实盘
- 钢结构技术(安全)交底记录
- 2021-2022学年最新沪科版九年级物理第十三章内能与热机综合练习练习题
- 外科护理学教案骨科部分
- 用句子记住高考英语单词-200个句子涵盖了全部高中单词(共37页)
- 学校及附属设施建设施工方案 (1)
- 腰椎爆裂性骨折伴截瘫护理查房
- 田英章临欧楷《心经》
- 表C1-11工程款支付报审表
评论
0/150
提交评论