C和C++之间的实质差异是什么?

发表时间: 2020-12-17 10:01

面向对象&面向过程

C++是C语言的延伸,可以理解为C++在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的复用、扩展和工程化,这是大型项目的必备要素。

而C语言是一种通用的、面向过程的计算机程序设计语言。

C++经常与C混用,这主要是因为许多人没有掌握C++语言中“面向对象”的概念,所以只能写出所谓“具备C++语言一些特性的C代码”。如果正维护某些用C++编写的老系统,可能你会看到大量这种类型的代码。

从技术上讲,C++是C的超集,这意味着C程序可以在C++编译器编译成功(会有一些特殊情况)。

类&数据类型

在C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。例如,类可以描述公司管理人员的基本特征(姓名、头衔、工资、特长等),而对象则代表特定的管理人员。通常,类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作。

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

应用角度

从应用角度来看,C++多用于开发各种后台使用的算法和逻辑库。而C语言则更底层,主要用于开发更核心的算法、驱动程序和控制程序等。它允许开发者直接访问计算机的内存,操纵计算机的许多底层部件,你会发现C被广泛应用在操作系统、底层硬件、嵌入式系统等方面,C语言通常被认为是面向系统的编程语言

学习路径

对于C语言的学习来说,需要了解最基础的语法诸如变量/循环/字符串等等,那学习C++的就需要在这个基础上增加对面向对象(封装、继承与多态)特性、泛型、模板、STL等等内容的学习。

不过,C和C++的学习路径大体相同,可以简单分为五大类:算法和数据结构、面向对象思想、基本语言知识、产品开发和与其他语言混合开发。在这个分类之下还有一些更细致的内容,如图所示:

C/C++是更快、更底层的语言,要想高效使用C/C++语言,就需要掌握更多的算法和数据结构的知识,以及操作系统和多线程的知识。尤其是操作系统的知识,因为程序最终要运行在操作系统上。

例如,如何读取一个文件的时间属性,如何读取键盘的特定键,如何建立一个目录等,这些都与程序运行的平台(操作系统)有紧密的关系。对这些知识了解得越多,就越能编写出高效、简洁的C/C++语言程序。

如果要编写一个大规模的程序,还需要具备设计模式的知识。除此之外,大中型的程序一般都是混合利用多种语言来开发的,这样就可以充分发挥各种语言的优点。例如,为了得到更好的界面,一般都会采用C#和Java进行开发,而核心的算法和靠近硬件的部分则需要采用C/C++语言编写。

要想真正融会贯通,一定要知道一些C++与其他语言混合开发的知识,例如C++/CLI, 或者是COM组件的知识。

对于想要入门C++的同学,人邮君推荐你读C++入门经典教程——《C++ Primer Plus 第6版 中文版》,作者是[美]史蒂芬·普拉达(Stephen Prata)。

2020版赠送价值99元e读版电子书及在线实验环境,附赠大尺寸(60CM*80CM)全书学习思维导图。

C++ Primer Plus 第6版 中文版(异步图书出品)

C++ Primer Plus 第6版 中文版(异步图书出品)
¥91.9
购买
  • 专为零基础读者撰写,近百万程序员的C++编程启蒙教程;
  • 全新升级,针对C++11标准全面更新;
  • 示意图解释概念,方便理解;
  • 随时指出潜存的问题,避免走弯路;
  • 庖丁解牛式分析程序,确保知其然更知其所以然;

这本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序详细而全面地阐述了 C++的基本概念和技术,并专辟一章介绍了C++11新增的功能。

全书分18章,分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑运算符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、友元、异常处理技术、string类和标准模板库、输入/输出、C++11新增功能等内容。

本书针对C++初学者,从C语言基础知识开始介绍,然后在此基础上详细阐述C++新增的特性,因此不要求读者有C语言方面的背景知识。可供初学者自学C++时使用,也可作为高等院校教授C++课程的教材。

本书包含大量的示例代码和编程练习,此外,还有配套的习题答案。

C++ Primer Plus 第6版 中文版习题解答(异步图书出品)

C++ Primer Plus 第6版 中文版习题解答(异步图书出品)
¥74.5
购买

《C++ Primer Plus(第6版)中文版习题解答》共分为18章,每一章的主题与《C++ Primer Plus(第6版)中文版》完全一致。每章开篇采用思维导图的方式列出本章的知识点,然后对每章的重点内容进行了梳理总结,最后则对每章中的复习题和编程练习进行了分析并给出了解答思路,确保读者在彻底夯实理论知识的同时,进一步提升实际编程能力。

C++语言入门经典教程:C++ Primer Plus 第6版 中文版+

C++语言入门经典教程:C++ Primer Plus 第6版 中文版+ 中文版习题解答(套装2册)(异步图书出品)
¥161.3
购买

有兴趣的同学还可以登录异步社区https://www.epubit.com/,学习免费课程!

想要入门C语言的同学,人邮君推荐你读C语言入门经典教程《C Primer Plus 第6版 中文版》,作者也是[美]史蒂芬·普拉达(Stephen Prata)。

C Primer Plus 第6版 中文版(异步图书出品)

C Primer Plus 第6版 中文版(异步图书出品)
¥84.1
购买