C与C++的升级关系

  • C++继承了所有的C特性
  • C++在C的基础上提供了更多的语法和特性
  • C++的设计目标是运行效率与开发效率的统一
C与C++的升级关系
文章图片
图1 升级1
  • C++ 更强调语言的实用性
  • 所有变量都可以在需要使用时在定义
int c = 0; for(int i=1; i<=3; i++){ for(int j=1; j<=3; j++){ c += i *j; } }

对比:
C语言中的变量都必须在作用域开始的位置定义
升级2
  • register 关键字请求编译器将局部变量存储于寄存器中
    • 在C++中依然支持register关键字
    • C++编译器有自己的优化方式
      • C语言中无法获取register变量的地址
      • C++中可以获取register变量的地址
      • C++编译器发现程序中需要取register变量的地址时,register对变量的声明变的无效
升级3
  • 在C语言中,重复定义多个同名的全局变量是合法的
    • C语言中多个同名的全局变量最终会被链接到全局数据区的同一地址空间上
  • 在C++中, 不允许定义多个同名的全局变量
升级4
  • struct 关键字加强
    • C语言中的struct定义了一组变量的集合
    • C语言中struct定义的标识符并不是一种新的类型
    • C++中的struct用于定义一个全新的类型
C与C++的升级关系
文章图片
图2 升级5
  • C++中所有的标识符都必须显示的声明类型
  • C语言中的默认类型在C++中是不合法的
f(i){ printf("i = %d\n",i); } g(){ return 5; }

  • 【C与C++的升级关系】在C语言中
    • int f()表示返回值为int, 接受任意参数的函数
    • f(void) 表示返回值为int的无参函数
  • 在C++中
    • int f() 和 inf f(void) 具有相同的意义
    • 表示返回值为int 的无参函数
总结
  • C++更强调实用性, 可以在任意的地方声明变量
  • C++中的register只是一个兼容的作用
  • C++编译器能够更好的进行优化
  • C++中的任意标识符都必须显示的指明类型

    推荐阅读