C++基本介绍

news2025/1/16 8:45:44

在这里插入图片描述

文章目录

  • 🥭1.C++基本介绍
    • 🧂1.1 C++是什么
    • 🧂1.2 C++发展史
  • 🍒2. C++的优势
    • 🥔2.1 语言的使用广泛度
    • 🥔2.2 C++的应用领域
  • 🫒3. C++学习计划

🥭1.C++基本介绍

🧂1.1 C++是什么

C++是一种通用的、高级的编程语言,它是C语言的扩展和改进版本。C++由Bjarne Stroustrup博士在20世纪80年代初开发,旨在为程序员提供更多的功能和工具,以便更轻松地编写复杂的软件程序。

拜一拜祖师爷,保佑在学习C++的路上少写bug

image-20230522142150548

C++支持面向对象编程。面向对象编程是一种编程范式,通过将数据和操作封装在对象中,可以更好地组织和管理代码。这使得C++能够创建模块化、可重用和易于维护的程序。

此外,C++还提供了许多其他功能和特性,如模板、异常处理、多态等。这些功能使得C++成为一门功能强大且灵活的编程语言,被广泛应用于各个领域。

C++与C语言是有一定的渊源的,但是C#的C++并没有很大关系。C#是早期微软为了对标Java而问世的一款编程语言。

C++是在C语言的基础上补充拓展出来的,就好比是一个妈生的亲兄弟(姐妹)。而Java“借鉴”了C++的一些特性,然后在此基础上做出一些改变,自立门户,C++和Java就好比是堂兄弟(姐妹)。C#又“借鉴”了Java一些特性和概念,然后又在此基础上做出一些改变Java和C#也是属于堂兄弟(姐妹)关系。

🧂1.2 C++发展史

C++的发展史可以追溯到1979年,贝尔实验室的本贾尼等人试图分析Unix内核的时候,试图将内核模块化,于是在C 语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。随着时间的推移,这种新的语言逐渐发展壮大,并在1983年正式被命名为C++。C++继承了C语言的基本语法和功能,并引入了面向对象编程的特性,如类、继承和多态性

C++历史版本:

版本发布年份内容
C++98/C++031998/2003最早的C++标准版本,包含了面向对象编程的基本特性、模板和STL(标准库)等功能。
C++11/C++0x2011引入了许多重要的特性,如自动类型推断、Lambda表达式、并发编程支持、右值引用和移动语义等,以及对模板和标准库的改进。
C++142014对C++11进行了一些修订和改进,增加了一些新特性和语法,如泛型lambda表达式、constexpr函数、二进制文字等。
C++172017引入了结构化绑定、折叠表达式、内联变量、并行算法库、文件系统库等新特性,以及对C++14的改进和修正。
C++202020引入了概念(Concepts)、模块(Modules)、协程(Coroutines)、三向比较运算符、范围for循环的初始化语句等重要特性,以及对C++17的改进和修正。
C++23 (预计)预计在2023年发布预计将引入一些新特性和改进,如常规化的元编程、设计模式支持、纤程(Fibers)等。

C++98定向之后,C++委员会就计划每隔5年更新一个大版本,03年正常更新了一次,如果按照计划,应该是在08年左右再更新一次。可是在05年的时候,C++委员会就发了公告,大概意思就是,可能搞不出大版本,只能小打小闹一下,然后就把这期间更新的叫C++0x。终于到了11年(时隔13年呐),新的标准终于更新了,也就是我们的C++11,这次的更新让不少人重新回到了C++,也一直沿用至今。但在这之后,一直没有很大的突破,当20年的时候,大家都很期待C++会有一个新的突破,可是会议结束之后,却未达到大家预期的效果。

image-20230522215652336

目前C++23还在定制中,这从侧面也能看出来C++还是有一定的局限性的。

Java相比C++,有一个“氪金”的公司(Oracle),大概每半年就更新一次,这样的好处就是Java后期的生态可能会比C++好一点,但是这也对学习Java的人来说,是一个头疼的问题,因为更新太快了,可能学着学着,版本就换了。

image-20230522215950390

C++现在虽然还是在发展,但是市面上主流使用的还是C++98和C++11,这些也够我们掉头发了,所以我们也不必担心,能把现有的玩明白,就很厉害啦。

由于C++是从C语言里面生长出来的,所以C++是兼容C语言的。

🍒2. C++的优势

🥔2.1 语言的使用广泛度

image-20230522212924704

从排行榜可以看出来,C++依然是属于大头,对于学习C++来说还是有很大的优势。

  1. C++兼容C,学一门等于学两门,不亏;
  2. C++让你成为“黑客”,C++给予了程序员极大的控制力,允许直接操作内存和底层资源。在合法和道德的前提下,C++让你成为一个技术高手,能够创造出令人瞩目的产品(如:Linux操作系统、英雄联盟、浏览器、PS…哪些知名的软件是c++写的?)。
  3. C++学习十分有成就感!

虽然这些都不是很着调,但我们在学习之前,肯定要给自己打气,“工欲善其事必先稳心态”(原句:工欲善其事,必先利其器),人家“王婆婆”卖瓜之前还得先夸夸自己的瓜呢,更何况C++确实是个“好东西”。

C++具体的优势和特性,还得在今后的学习中,慢慢领悟。

🥔2.2 C++的应用领域

  1. 游戏开发:著名的游戏引擎Unity3D使用C++作为其核心引擎的开发语言。另外,著名的游戏《英雄联盟》和《CS》也是使用C++进行开发的。
  2. 嵌入式系统:无人机制造商DJI的飞控系统是用C++编写的。汽车电子领域中,自动驾驶系统和车载娱乐系统通常也使用C++进行开发。
  3. 科学计算和数值分析:开源库Eigen是一个用于线性代数计算的C++库,被广泛用于科学计算和数值分析任务。另外,CERN的粒子物理研究中使用的ROOT数据分析框架也是用C++编写的。
  4. 金融和高频交易:高频交易公司使用C++来开发快速而高效的交易系统。例如,金融公司Jane Street就是使用C++作为其主要交易系统的开发语言之一。
  5. 图形界面和桌面应用:跨平台的应用开发框架Qt是用C++编写的。许多知名的软件,如Adobe Photoshop、Autodesk Maya和Microsoft Office套件,也使用C++进行桌面应用程序的开发。
  6. 数据库系统:开源关系型数据库管理系统MySQL使用C++编写。另外,PostgreSQL、Oracle数据库等也在其代码中使用了C++。

🫒3. 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++这门语言肯定是需要一定的积累的,不能被网上的“21天”系列迷惑。在有一定基础之后,可以看一些技术书籍,进一步提升自己的水平。

这篇文章是前辈左耳朵耗子——陈皓写的“21天教你学会C++”,来讨论当下的大环境及自己的经验。

可惜的是前辈本月13号晚“离开”了我们,博主几个月前还听老师谈起了这位前辈,跑去前辈的技术论坛学习。

希望前辈路走好!也希望朋友们注意身体,平安健康。

本期就分享到这里,我们下期再见,如果还有下期的话。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/557473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用streamlit,几行代码就可以拥有漂亮图表!

大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的爬虫,再比如一些限时福利,错过了就是错过了。 所以建议大家加个星标,就能第一时间收到推送。&#x1f44…

FastAPI 和 fastapi-amis-admin:强大而可扩展的后台管理解决方案!

大家好,我是安果! 我们都知道 Django 生态丰富,功能强大,适用于中、大型项目,并且自带了后台管理系统;而 FastAPI 更适用于构建高性能的 API,后台管理系统需要另外开发 本篇文章将介绍 FastAPI…

完犊子!原单位的离职证明丢了,下周要入职了,用AI做一个行不行?

弄丢了离职证明怎么办? 一位网友哀叹: 完犊子!原单位的离职证明丢了,下周要入职了,现在怎么办?用AI做一个行不行? 有相同经历的网友安慰他,离职证明没了没事,新公司会要求…

打卡智能中国(五):博士都去哪儿了?

《打卡智能中国》系列更新了几期,有读者表示,很爱看这类接地气的真实故事,也有读者反映,不是电工,就是文员、农民、治沙人,人工智能不是高精尖学科吗?那些学历很高的博士都去哪儿了?…

用数据讲故事:十大统计学/机器学习魔法指数

统计学和机器学习为数据分析提供理论基础,入门时我看过很多统计学相关书籍,复杂的公式和推导过程让我一度陷入迷茫。对于数据科学/分析师来说,如何使用统计学知识并应用到我们的分析场景中更为重要。本文主要基于数据分析工作中的实际应用场景…

1000本!计算机经典书籍分享

闲话少说,列表如下。 编程语言类书籍 包含:Java、C、C、Python、Go等语言 Java电子书大全https://www.yingyanshe.cn/5275.htmlC电子书大全https://www.yingyanshe.cn/5284.htmlC语言类电子书https://www.yingyanshe.cn/5293.htmlC#电子书https://www…

chatgpt赋能Python-python_fg

Python FG: 优秀的Python工程师一定要知道的资源 如果你是一名Python工程师,那么你一定会喜欢Python FG资源。Python FG是一个在线平台,提供海量的Python API文档、教程、实例、以及与Python有关的各种工具和资源,让Python工程师轻松学习和使…

盘点!Instruction Tuning 时代的大模型

作者 | Kevin吴嘉文 整理 | NewBeeNLP 公众号 https://zhuanlan.zhihu.com/p/616830127 Alpaca,ChatGLM 等模型的效果可以接受,下文总结部分笔记,为训练自定义小型化(7B)模型提供点知识储备。包括模型论文 LaMDA, Mup…

纯净版Win10系统重装教程(超详细)

本博客详细讲解纯净版Win10系统重装,步骤齐全,小白可实操。 纯净版Win10系统重装教程 系统安装前准备下载安装工具更新重装 制作U盘为启动盘 重装Win10进入Boot模式选择系统版本分区系统安装中新系统配置 系统安装前准备 ➢ 准备8G或8G以上的空U盘。&a…

POSTGRESQL 10个使用POSTGRESQL 需要避免的错误 (译)

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

EOS网络基金会大战Block.One

微信公众号修改了推送规则,请各位亲爱的读者给刘教链公众号添加星标🌟,以便及时收到每日最新文章推送! 星标🌟添加方法:【1】点击标题下方“刘教链 刘教链”的第二个“刘教链”,打开公众号主页&…

chatgpt赋能Python-python_field

Python在Field上的应用 Python作为一门高级编程语言,在众多领域中扮演着应用广泛、易于学习、使用简便、速度出色的角色。在本文中,我们将重点关注Python在Field上的应用。 Field是什么? Field指的是“领域”,包括科学、工程、…

活动报名|分布式人工智能:可扩展性、效率和泛化性

2023年05月25日(星期四)14:00-15:30,智源社区「智源Live 第42期」线上活动将在线举办,「阅读原文」报名即可参加。 活动主题:分布式人工智能:可扩展性、效率和泛化性 安波 安波是新加坡南洋理工大学校长委员…

chatgpt赋能Python-python_for_end

Python for End: 介绍 Python是一种高级编程语言,由Guido van Rossum创建于1989年,并在1991年正式发布。Python是一种多范式编程语言,可以用于面向对象、函数式和过程式编程。它拥有简单易懂的语法以及扩展性强的库,从而使得开发…

见证ES6革命:深入学习let、const、var的区别、解构赋值、箭头函数等常用知识点,开创全新开发模式。

let、const、var的区别 使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。使用const声明的是常量,在后面出现的代码块中,不能在修改改常量的值。 var let const 函数级作用域 块级…

ThingsBoard教程(五十):规则节点解析 创建关系节点Create Relation Node,删除关系节点 Delete Relation Node

创建关系节点 Create Relation Node Since TB Version 2.2.1 根据类型和方向,从所选实体创建到消息发起方的关系。 以下消息发起方类型被允许:资产、设备、实体视图、客户、租、仪表板。 通过元数据键模式查找目标实体,然后在源实体和目标实体之间创建关系。 如果选择的…

AbstractStringBuilder源码

介绍 AbstractStringBuilder这个抽象类是StringBuilder和StringBuffer的直接父类,而且定义了很多方法,因此在学习这两个类之前建议先学习 AbstractStringBuilder抽象类 该类在源码中注释是以JDK1.5开始作为前两个类的父类存在的 abstract class Abstr…

【已解决】使用selenium启动谷歌Chrome浏览器打开指定网站,页面空白,而使用其它浏览器手动打开该网站则正常

问题描述 1、在使用python实现自动化网络爬虫时,我使用到selenium来驱动谷歌Chrome浏览器来打开某一个网页,然后爬取数据,代码如下: from selenium import webdriver import timedriver webdriver.Chrome() driver.get(https://…

基于JavaSpringBoot+Vue+uniapp实现微信小程序新闻资讯平台

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

多模态大模型时代下的文档图像智能分析与处理

多模态大模型时代下的文档图像智能分析与处理 0. 前言1. 人工智能发展历程1.1 传统机器学习1.2 深度学习1.3 多模态大模型时代 2. CCIG 文档图像智能分析与处理论坛2.1 文档图像智能分析与处理的重要性和挑战2.2 文档图像智能分析与处理高峰论坛2.3 走进合合信息 3. 文档图像智…