Q:C 和 C++ 的区别是什么?

A:C++ 在设计之初可以看作是 C 的超集,但是随着C++的发展,C 和 C++ 现在已经发展成了两种不同的语言,但是它们的联系还是很密切的:

+ 首先 C 和 C++ 在基础语法上差别不大。
    
    这里说的基础语法说的是语法细节,C++ 能支持绝大多数的 C 的基础语法。

+ 往上一层,C++ 比 C 多出的一些语法和关键字

    1、两者头文件的不同以及名称空间的声明不同;
    2、新增关键字 new/delete;
    3、新增关键字 auto、explicit,显示和隐式转换概念。
    4、新增引用传递,实际上是指针的封装实现;

+ 重载、虚函数概念

+ 类、对象和继承,完全独立于 C 的概念

    对象是类的实体,而这个实体包含了各种变量和函数;
    有了类对象就有了构造函数、析构函数、复制构造函数以及友元函数;
    有类就有权限和继承,私有、公有、单继承、多继承、虚继承、父子类、基类派生类等

+ C++ 支持范式编程,异常机制、元编程、STL标准库等独立特性

+ 设计思想和引用场景的区别

    C 出于对执行效率和内存占用的考虑使它趋于底层,如内核驱动和操作系统,特点是越精简越高效。
    C++ 设计之初的动机就是把 C 繁杂的实现过程抽象为类型并且进行实例化管理,相比于 C,更加开放和自由,利于代码维护和管理,适合做大型软件。
    C 更注重逻辑实现, C++ 更注重程序的整体设计,这就是常说的面向过程和面向对象