版权声明:本课件及其印刷物、视频的版权归成都国嵌信息技术有限公司所有,并保留所有权力:任何单位或个人未经成都国嵌信息技术有限公司书面授权,不得使用该课件及其印刷物、视频从事商业、教学活动。已经取得书面授权的,应在授权范围内使用,并注明“来源:国嵌”。违反上述声明者,我们将追究其法律责任。 www.enjoylinux.cn第1课C到C++的升级
www.enjoylinux.cn嵌入式Linux技术咨询QQ号: 550491596嵌入式Linux学习交流QQ群: 65212116C与C++的关系C++继承了所有的C特性C++在C的基础上提供了更多的语法和特性C++的设计目标是运行效率与开发效率的统一C++以C语言为基础类型加强函数加强异常处理。。。面向对象支持
www.enjoylinux.cn嵌入式Linux技术咨询QQ号: 550491596嵌入式Linux学习交流QQ群: 65212116C++对C的加强C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。注意:C语言中的变量都必须在作用域开始的位置定义!!1-1.cpp
www.enjoylinux.cn嵌入式Linux技术咨询QQ号: 550491596嵌入式Linux学习交流QQ群: 65212116C++对C的加强register关键字的变化register关键字请求“编译器”将局部变量存储于寄存器中•C语言中无法取得register变量地址在C++中依然支持register关键字•C++编译器有自己的优化方式,不使用register也可能做优化•C++中可以取得register变量的地址早期C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。1-2.cpp
www.enjoylinux.cn嵌入式Linux技术咨询QQ号: 550491596嵌入式Linux学习交流QQ群: 65212116C++对C的加强在C语言中,重复定义多个同名的全局变量是合法的在C++中,不允许定义多个同名的全局变量C语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上。C++直接拒绝这种二义性的做法。1-3.cpp
www.enjoylinux.cn嵌入式Linux技术咨询QQ号: 550491596嵌入式Linux学习交流QQ群: 65212116C++对C的加强下面的代码输出什么?1-4.cpp
www.enjoylinux.cn嵌入式Linux技术咨询QQ号: 550491596嵌入式Linux学习交流QQ群: 65212116C++对C的加强C++编译器对const常量的处理当碰见常量声明时在符号表中放入常量编译过程中若发现使用常量则直接以符号表中的值替换编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间注意:C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值。
www.enjoylinux.cn嵌入式Linux技术咨询QQ号: 550491596嵌入式Linux学习交流QQ群: 65212116C++对C的加强……0c……ValueName符号表将常量c存入符号表用符号表中的值替换c