- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【C教程】第三堆与拷贝构造函数
常量: 1.在C++中常数即常量, 如:int a = 5; (常量5,一种可能的编译方法:5不在数据中,而在指令中,所以没有指针,不能赋值) 见程序 2. const 常量,具有常量性质的数据 (编译器“把门”) 目的是解决类似: #difine pi 3.1415926 的常量定义 见程序 const 指针 1.指向常量的指针(*P是常量,P不是常量) 见程序 2.指针常量(P是常量,*P不是常量) 见程序 3.指向常量的指针常量(P是常量,*P是常量) 见程序 const 成员函数: 约束成员函数的只读性 见程序 引用: 什么是引用:别名,外号 引用本身没有存储空间 见程序 引用的使用: 见程序 什么能被引用: 什么不能被引用(见程序) 1.常量,const(由编译器决定) 2.void (不是类型,更不是类型的对象) 3.数组(数组不是一个类型的对象) 4.类型(不是对象) 5.空(NULL) 6.引用(引用不是对象,没有引用的引用,也没有引用的指针) 用引用传递参数 见程序 实参传形参的瞬间绑定 问题:普通变量与引用的识别 返回引用:返回的是别名 见程序 返回引用作为左值: 见程序 const 引用 见程序 引用小结 1.引用是别名、不是实体。有声明、无定义。 2.引用必须在声明时立即初始化(绑定)。 3.引用不可重复初始化,一个外号不能用给两个(以上)人。 4.一个变量可以有两个(以上)引用。一个人有多个外号。 5.可以用一个引用初始化另一个引用。 一个外号声明另一个外号。 6.参数为引用时,实参与形参(引用)在传参的瞬间绑定,函数结束时绑定撤销。 7.用函数返回的普通变量初始化一个引用是很危险的做法,这意味着返回的值已经被清栈,引用绑定了一个虚无的变量。 8.函数返回引用,意味着返回了一个已经初始化了的引用(别名),这个引用可以给普通变量赋值,可以初始化另一个 引用,还可以作为左值使用。 8.const引用锁死引用的被赋值。 作用域、生存期、运行时内存结构 作用域:一个概念的起作用的范围,或者 说在程序中可以访问这个概念的 范围。 作用域是对人而言的,目的是 方便程序员组织程序。对计算机 而言,无所谓作用域。 C的作用域:全局、auto局部、static局部 C++的作用域:同上、类域、名空间 生存期: 语言中的概念所对应的内存中的实体的存在时间(参考运行时) 运行时内存结构: 代码区、静态数据区、栈区、堆区 从运行效率考虑,顺序应为: 静态数据区 栈区 堆区 C的“好”程序? 堆与拷贝构造函数 C中的堆技术: viod* malloc(size); free(p); 只有空间,没有类型 malloc(size)是一个外挂函数 C++的堆技术: new delete与堆相关的概念都具备,甚至可以使构造函数、析构函数自动工作 new delete 是C++内嵌的操作符 拷贝构造函数: 当用一个已有的对象初始化另一个对象时编译器自动调用拷贝构造函数。 什么是拷贝构造函数 见程序 什么时候用拷贝构造函数 1. CStudent oStudent1; CStudent oStudent2 = oStudent1; 2.void fn(CStudent oStudent) { …… } 默认拷贝构造函数 如果程序中未提供拷贝构造函数,C++编译器将提供一个默认的拷贝构造函数,与默认构造函数类似。 浅拷贝 不带资源 深拷贝 带资源 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * *
文档评论(0)