W...Y的主页😊 代码仓库分享💕 🍔前言: 我们学习了C语言,有了C语言的底子就更容易学习c++,今天让我们认识一下C++,并了解分析一下C++。 目录 什么是C++ 为什么会出现C
🍔前言:
我们学习了C语言,有了C语言的底子就更容易学习c++,今天让我们认识一下C++,并了解分析一下C++。
目录
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的
程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机
界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言
应运而生。
1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一
种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而
产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的
程序设计,还可以进行面向对象的程序设计。
C++的出现可以追溯到20世纪80年代,它的诞生是为了满足一些编程语言的需求和解决一些问题。以下是一些导致C++出现的主要原因:
扩展性:C语言在系统编程和应用程序开发中非常成功,但它在面向对象编程(OOP)方面存在一些不足。C++的创建是为了将OOP的特性引入C语言,从而更好地处理大型和复杂的项目。这种扩展性使得C++能够同时支持传统的过程性编程和OOP,使其更灵活。
2.继承和代码重用:C++引入了类和对象的概念,允许开发者创建具有继承和多态性质的数据结构,这有助于提高代码的可重用性和可维护性。这对于大型项目非常有用。
3.类型安全性:C++引入了类型安全性的特性,减少了一些C语言中常见的错误,如指针溢出和内存泄漏。这有助于提高代码的质量和可靠性。
4.标准库:C++的标准库(STL)提供了丰富的数据结构和算法,减少了开发者需要从头编写的工作量。这加速了开发过程,并提高了代码的质量。
5.性能:C++被设计为一种高性能语言,它提供了直接的内存访问和更多的底层控制,这使得它适用于系统编程和嵌入式开发等需要高性能的领域。
6.可移植性:C++可以在不同的平台上编写可移植的代码,这使得跨平台开发变得更加容易。
7.社区和生态系统:C++拥有广泛的开发社区和丰富的资源,这使得开发者可以轻松获得支持、工具和框架。
总的来说,C++的出现是为了在保留C语言的功能和性能的基础上,提供更多的抽象和工具,以满足不断增长的软件开发需求。它成为了一种非常强大和多用途的编程语言,广泛用于游戏开发、系统编程、嵌入式系统、科学计算等众多领域。它继承了C语言的传统,同时引入了新的编程范例和工具,使得软件开发更加高效和可维护。
1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C
语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with
classes。
语言的发展就像是练功打怪升级一样,也是逐步递进,由浅入深的过程。我们先来看下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++23 | 制定ing |
C++还在不断的向后发展。但是:现在公司主流使用还是C++98和C++11,所有大家不用追求最
新,重点将C++98和C++11掌握好,等工作后,随着对C++理解不断加深,有时间可以去琢磨下更
新的特性。
C++和C语言是两种不同的编程语言,它们有许多相似之处,但也存在一些显著的区别。以下是它们的主要区别:
面向对象编程:
- C++是一种面向对象编程(OOP)语言,它支持类和对象的概念,允许开发者使用封装、继承和多态等OOP特性。
- C语言是一种过程性编程语言,没有直接支持类和对象。它主要侧重于过程和函数的编写。
类型安全性:
- C++对类型安全性有更强的支持,它引入了强类型检查和类型安全的特性,减少了一些常见的错误,如指针操作中的缓冲区溢出。
- C语言在这方面相对较弱,允许更多的灵活性,但也容易导致类型错误和安全漏洞。
标准库:
扩展性:
- C++允许使用C语言的代码,因此可以逐步将C代码转换为C++。
- C语言不支持C++的一些特性,因此将C++代码转换为C可能需要进行较大的改动。
新特性:
- C++经常引入新的语言特性和标准,以增加语言的功能和性能,例如模板、异常处理、智能指针等。
- C语言的标准相对稳定,不经常引入新的特性。
复杂性:
- C++通常被认为比C语言更复杂,因为它引入了更多的概念和语法规则,需要更多的学习和理解。
- C语言相对较简单,更适合一些需要更底层控制的场景。
生态系统:
- C++拥有庞大的开发社区和丰富的资源,适用于许多应用领域,包括游戏开发、系统编程、嵌入式系统等。
- C语言也有强大的生态系统,但在某些领域,如现代应用程序开发,已经被C++和其他语言所取代。
总的来说,C++是C语言的扩展,具有更多的功能和抽象,更适合复杂的应用程序开发,而C语言更适合较低级别的系统编程和一些资源受限的环境。选择哪种语言取决于项目的需求和开发者的偏好。
C++是一种多用途的编程语言,具有多个优点,使其在许多领域广泛应用。以下是C++的一些主要优点:
高性能: C++是一种编译型语言,允许进行底层的内存管理,这使得它在性能上优越。C++代码通常比解释型语言(如python)执行更快,适合处理大规模数据和高计算需求的应用。
多范式编程: C++支持多范式编程,包括面向对象、面向过程和泛型编程。这使得它非常灵活,能够适应不同的编程风格和需求。
底层控制: C++允许直接访问内存和硬件,这对于系统编程和嵌入式开发非常重要。开发者可以精确控制程序的行为,这对于需要高度优化的应用程序非常有利。
丰富的标准库: C++具有强大的标准模板库(STL),包括各种容器、算法和数据结构。这些库提供了许多常用工具,可以加速开发并提高代码的可维护性。
广泛的应用领域: C++在游戏开发、嵌入式系统、高性能计算、金融领域、图形学等各个领域都有广泛的应用。它是一种通用性强、适用性广泛的语言。
社区和资源: C++有庞大的开发者社区,提供了大量的学习资源、开源库和工具。这使得学习和使用C++更加容易。
强大的工具生态系统: C++有丰富的集成开发环境(IDE)和调试工具,如Visual Studio、CLion、GCC、Clang等,使开发过程更加高效。
可扩展性: C++支持模板元编程,这使得开发者可以编写高度可扩展的代码,适应不断变化的需求。
历史悠久: C++已经存在多年,经过了广泛的演化和改进。它的稳定性和可靠性得到了验证。
下面图片是最新2023年最受欢迎编程语言榜单:
在30多年的发展中,C/C++几乎一致稳居前5。
TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互
联网上有经验的程序员、 课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 Google、
MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。
注意:排名不能说明那个语言好,那个不好,每门编程语言都有适应自己的应用场景,但是C++一直很受欢迎。
C++在各种工作领域中都有广泛的应用。它是一种多用途的编程语言,因为它具有高性能、灵活性和丰富的功能,适用于各种应用程序。以下是C++在不同工作领域中的一些主要应用:
游戏开发:
系统编程:
- 操作系统、驱动程序和操作系统工具通常使用C++进行开发。这是因为C++具有直接的内存访问和底层硬件控制的能力。
- C++也用于开发网络协议、文件系统和其他系统级应用。
嵌入式系统:
嵌入式:就是把具有计算能力的主控板嵌入到机器装置或者电子装置的内部,能够控制这些装置。比如:智能手环、摄像头、扫地机器人、智能音响等。
谈到嵌入式开发,大家最能想到的就是单片机开发(即在8位、16位或者32位单片机产品或者裸机上进行的开发),嵌入式开发除了单片机开发以外,还包含在soc片上、系统层面、驱动层面以及应用、中间件层面的开发。
常见的岗位有:嵌入式开发工程师、驱动开发工程师、系统开发工程师、Linux开发工程师、固件开发工程师等。
知名的一些厂商,比如:以华为、vivo、oppo、小米为代表的手机厂;以紫光展锐、乐鑫为代表的芯片厂;以大疆、海康威视、大华、CVTE等具有自己终端业务厂商;以及海尔、海信、格力等传统家电行业。
随着5G的普及,物联网(即万物互联,)也成为了一种新兴势力,比如:阿里lot、腾讯lot、京东、百度、美团等都有硬件相关的事业部科学计算和数学建模:
- C++用于高性能科学计算和数学建模,例如在物理学、工程学和计算机科学中的数值模拟和数据分析。
- C++库如Eigen和Boost提供了强大的数学和线性代数工具。
金融领域:
- 金融领域的高频交易和风险分析通常使用C++编写,因为它能够处理大量的数据和快速执行复杂的算法。
- 开源库如QuantLib用于金融建模和分析。
图形和计算机图形学:
- C++广泛应用于计算机图形学,包括视频游戏、动画和计算机辅助设计。
- 图形库和api,如OpenGL和DirectX,通常使用C++编写。
数据库系统:
- 许多关系数据库管理系统(RDBMS)的内部实现和驱动程序使用C++编写。例如,Mysql和postgresql都有C++组件。
- C++库如STXXL用于高性能大规模数据处理。
操作系统工具和开发:
- 开发操作系统和系统工具需要直接访问硬件和系统资源,因此C++是一个常见的选择,用于编写诸如编译器、调试器和操作系统核心组件的工具。
- 人工智能
一提到人工智能,大家首先想到的就是Python,认为学习人工智能就要学习python,这个
是误区,python中库比较丰富,使用python可以快速搭建神经网络、填入参数导入数据就
可以开始训练模型了。但人工智能背后深度学习算法等核心还是用C++写的。
总之,C++是一种非常强大和多用途的编程语言,适用于各种领域,特别是需要高性能、底层控制和复杂算法的应用。它在许多行业中都有着广泛的应用,因此学会C++编程技能可以为从事这些领域的开发者提供很多机会。
除了上述领域外,在:科学计算、浏览器、流媒体开发、网络软件等都是C++比较适合的场景,
作为一名老牌语言的常青树,C++一直霸占编程语言前5名,肯定有其存在的价值。
学习C语言需要多多练习,学习数据结构需要多多思考,那学习C++呢?
以下引用自2010年8月号《程序员》刊登的拙文《C++强大背后》最后一段:
C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序
设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点
学习心得。个人认为,学习C++可分为4个层次:
第一个层次,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++有难度,但也是相当有趣且有满足感的。
如果题主认为的「精通」是指上述所指的第二层次,那么我估计一年全职时间也未足够「精
通」。首先,阅读这些书籍本身也需要不少时间,而且对于一般人来说(指除了一些学习记忆能
力超强的人),很可能需要阅读几遍才能记住一些细节。另外,阅读后必须要练习。除了入门的
习题外,还需要做一些工程向的项目,才能了解各种语法、编程范式的使用方法及时机,理想地
建议参与一些开源项目。然而,学习是需要不断思考并把结果沉淀,方法包括与朋友讨论、写博
客、写知乎答案等,这些都需要时间。
而网络上有许多21天速成C++的办法与书籍,但是这些都是虚假的不真实的存在。下面是一副调侃“如何21天学完c++”的漫画:
所以没有什么是可以速通的,都需要我们不断地学习、练习、复习进行知识地熟练运用才行。
虽然C++语法特性繁琐复杂,经典书籍琳琅满目,但是学习方法是属于自己的,我们应该总结出一套属于自己的学习经验,多总结。
1. 写博客
经常写博客不仅可以记录自己学习的历程,知识点的认识,更是复习的一把神兵利器。
2. 中后期画思维导图总结
画思维导图软件比如:xmind、imindmap等,我们要熟练应用。
常看一些经典书籍
入门阶段,找一本简单、薄一点的书快速入门,《C++程序设计》就挺适合的,可以简
单快速了解C++的语法特性。当C++学习过半之后,大概继承和多态学完,建议看下《Effective C++》,该书以建议
的方式告诉你如何写出更好的C++程序,看和不看差别非常大。
C++系统学完后,有时间可以看下《C++编程思想》对讲过的知识点融会贯通,该
本书有一定深度,从原理方面对C++语法进行介绍。
《C++ Prime》可以当成工具书对待,有不清楚的语法特性可以快速去查,建议工作之
后可以利用闲暇时间慢慢品味下。最后这两本书都有一定难度,如果基础知识掌握不扎实,不建议看,强烈建议好好把基础知
识打扎实。
《STL源码剖析》将六大组件逐一剖析,看完之后对STL的设计框架以及内部实现原理
有更深的认识,面试时可以游刃有余和面试官交锋。
《深度探索C++对象模型》会让你对C++语法设计原理有更深层次的认识,有些疑惑的
知识点看完之后里面就清晰了。
4.多刷题
牛客网
牛客网专项训练https://www.nowcoder.com/intelligentTest
2. LeetCode
leetcode中文刷题网站Https://leetcode-cn.com/problemset/all/
C++是一个庞大而不断发展的语言,持续学习是保持竞争力的关键。尝试新的C++标准和功能,保持对语言的敏感性。
记住,学习编程是一个渐进的过程,不要急于求成。通过不断的实践和项目经验,你将逐渐熟练掌握C++。
学习C++还道阻且长,所以我们一定要脚踏实地,一步一个脚印打好基础,争取每次学一遍都有收获。
以上就是本次内容,希望可以从本篇文章中喜欢上C++。
来源地址:https://blog.csdn.net/m0_74755811/article/details/133774542
--结束END--
本文标题: C++从入门到入土
本文链接: https://lsjlt.com/news/434050.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0