00【C++ 入门基础】前言

文章目录

  • 1.什么是C++?
  • 2.C++为何出现?
  • 3.C++的发展史
  • 4.如何学习C++?
    • 二十一天学会C++:

1.什么是C++?

C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。


2.C++为何出现?

为了解决现实的工程问题(复杂性、可维护性、可扩展性、安全性),C++诞生。

C语言的局限:

  • ​抽象能力弱:​​ C是过程式语言,缺乏有效的机制来封装数据和操作数据的行为(即“对象”概念)。模块间通过函数和全局数据交互,随着项目规模增大,全局数据容易造成命名冲突和意外修改,函数间依赖关系复杂难以管理。
  • ​代码复用困难:​​ 主要通过复制粘贴或函数库复用,缺乏高级的、类型安全的复用机制(如继承、泛型)。不同模块对同一数据结构的不同操作散落在各处,修改数据结构牵一发而动全身.
  • ​类型检查不完善:​​ void* 的使用虽然灵活但危险,容易导致类型错误和崩溃。结构体(struct)仅是数据的被动聚合,无法附带操作.
  • ​缺乏资源管理机制:​​ 手动管理内存(malloc/free)极易出错(内存泄漏、野指针),其他资源(文件句柄、锁等)的管理同样脆弱.

Bell Labs内部开发大型网络交换机软件、分布式计算等项目时,迫切需要一种能克服C的这些局限、提高代码组织性、可靠性、可维护性和复用性的语言,同时必须保留C的高效率和直接访问硬件的能力,因为它要用于性能敏感和底层的系统编程,于是在C语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。


3.C++的发展史

阶段 内容
C with
classes 类及派生类、公有和私有成员、类的构造和析构、友元、内联函数、赋值运算符重载等
C++1.0 添加虚函数概念,函数和运算符重载,引用、常量等
C++2.0 更加完善支持面向对象,新增保护成员、多重继承、对象的初始化、抽象类、静态成员以及const成员函数
C++3.0 进一步完善,引入模板,解决多重继承产生的二义性问题和相应构造和析构的处理
C++98 C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
C++03 C++标准第二个版本,语言特性无大改变,主要:修订错误、减少多异性
C++05 C++标准委员会发布了一份计数报告(Technical Report,TR1),正式更名C++0x,即:计划在本世纪第一个10年的某个时间发布
C++11 增加了许多特性,使得C++更像一种新语言,比如:正则表达式、基于范围for循环、auto关键字、新容器、列表初始化、标准线程库等
C++14 对C++11的扩展,主要是修复C++11中漏洞以及改进,比如:泛型的lambda表达式,auto的返回值类型推导,二进制字面常量等
C++17 在C++11上做了一些小幅改进,增加了19个新特性,比如:static_assert()的文本信息可选,Fold表达式用于可变的模板,if和switch语句中的初始化器等
C++20 自C++11以来最大的发行版,引入了许多新的特性,比如:模块(Modules)、协程(Coroutines)、范围(Ranges)、概念(Constraints)等重大特性,还有对已有特性的更新:比如Lambda支持模板、范围for支持初始化等

C++还在不断的向后发展。


4.如何学习C++?

书籍推荐:

  • 第一个层次,C++基础 (平平常常)
    挑选一本入门书籍,如《C++ Primer》、《C++大学教程》或Stroustrup撰写的经典《C++程序设计语
    言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程
    序库》及《The C++ Standard Library Extensions》可供参考;
  • 第二个层次,正确高效的使用C++ (驾轻就熟)
    此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、 《Effective
    STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;
  • 第三个层次,深入解读C++ (出神入化)
    关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖
    析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、
    《C++模版元编程》;
  • 第四个层次,研究C++ (返璞归真)
    阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文件
    《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。由于我主要是应
    用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业
    务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中
    汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感
    的。

二十一天学会C++:

00【C++ 入门基础】前言_第1张图片


虽然C++ 用强大的抽象能力解决 C 语言在大型工程中的痛点,但是有利就也有弊,最明显的当然就是复杂度增加,学习曲线变长。


本文章为作者的笔记和心得记录,顺便进行知识分享,有任何错误请评论指点:)。

你可能感兴趣的:(c++,c++,java,开发语言,数据结构,算法,c语言)