第二课 C语言到C++的升级

第二课 C语言到C++的升级

文章目录

  • 第二课 C语言到C++的升级
    • 一、C与C++的关系
    • 二、register 关键字
    • 三、struct 关键字的加强
    • 四、面试小问题
    • 五、小结

一、C与C++的关系

  • C++继承了所有C的特性

  • C++在C的基础上提供了更多的语法和特性

  • C++的设计目标是运行效率与开发效率的统一

  • C++

    以C语言为基础

    面向对象支持

    类型加强、函数加强、异常处理…

  • C+更强调语言的实用性

  • 搜有的变量都可以在需要使用时再定义

  • 在C语言中,重复定义多个同名的全局变量时合法的,这些全局变量最终会被链接到全局数据区的同一地址上

    在C++中,不允许定义多个同名的全局变量

  • C++所有的标识符都必须显示的声明类型

  • C语言中的默认类型在C++中是不合法的

  • 三目运算,C语言不能作为左值(返回的是变量值),C++可以(返回的是变量本身,但是其中只要有一个为常量,就不能作为左值)

    C:a = (a

    C++:(a

二、register 关键字

  • register 关键字请求编译器将局部变量存储与寄存器中

    在C++中依然支持register关键字

    C++编译器有自己的优化方式

    • C语言中无法获取register变量的地址
    • C++中可以取得register变量的地址
  • C ++中的register 关键字

    C++编译器发现程序中需要取register变量地址时,register对变量的声明变得无效(早期C++编译器)

    早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充

三、struct 关键字的加强

  • C语言

    struct 定义了一组变量组合

    strucct定义的标识符并非一种新的数据类型,如果需要定义新的类型,需要加typedef

  • C++

    struct用于定义全新的类型

四、面试小问题

  • int f()和int f(void)有什么区别?

    • C语言

      int f()表示返回值为 int,接受任意参数的函数

      int f(void)表示返回值为int的无参函数

    • C++

      具有相同的意义,表示返回值为int的无参函数

五、小结

  1. C ++更强调实用性,可以在任意的地方声明变量
  2. C++中的register关键字只是一个兼容作用
  3. C++编译器能够更好的进行优化
  4. C++中的任意标识符都必须显示的指明类型

你可能感兴趣的:(#,C,++学习笔记,C++)