C++基本介绍
文章目录
- 🥭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
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++03 | 1998/2003 | 最早的C++标准版本,包含了面向对象编程的基本特性、模板和STL(标准库)等功能。 |
C++11/C++0x | 2011 | 引入了许多重要的特性,如自动类型推断、Lambda表达式、并发编程支持、右值引用和移动语义等,以及对模板和标准库的改进。 |
C++14 | 2014 | 对C++11进行了一些修订和改进,增加了一些新特性和语法,如泛型lambda表达式、constexpr函数、二进制文字等。 |
C++17 | 2017 | 引入了结构化绑定、折叠表达式、内联变量、并行算法库、文件系统库等新特性,以及对C++14的改进和修正。 |
C++20 | 2020 | 引入了概念(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++会有一个新的突破,可是会议结束之后,却未达到大家预期的效果。
目前C++23还在定制中,这从侧面也能看出来C++还是有一定的局限性的。
Java相比C++,有一个“氪金”的公司(Oracle),大概每半年就更新一次,这样的好处就是Java后期的生态可能会比C++好一点,但是这也对学习Java的人来说,是一个头疼的问题,因为更新太快了,可能学着学着,版本就换了。
C++现在虽然还是在发展,但是市面上主流使用的还是C++98和C++11,这些也够我们掉头发了,所以我们也不必担心,能把现有的玩明白,就很厉害啦。
由于C++是从C语言里面生长出来的,所以C++是兼容C语言的。
🍒2. C++的优势
🥔2.1 语言的使用广泛度
从排行榜可以看出来,C++依然是属于大头,对于学习C++来说还是有很大的优势。
- C++兼容C,学一门等于学两门,不亏;
- C++让你成为“黑客”,C++给予了程序员极大的控制力,允许直接操作内存和底层资源。在合法和道德的前提下,C++让你成为一个技术高手,能够创造出令人瞩目的产品(如:Linux操作系统、英雄联盟、浏览器、PS…哪些知名的软件是c++写的?)。
- C++学习十分有成就感!
虽然这些都不是很着调,但我们在学习之前,肯定要给自己打气,“工欲善其事必先稳心态”(原句:工欲善其事,必先利其器),人家“王婆婆”卖瓜之前还得先夸夸自己的瓜呢,更何况C++确实是个“好东西”。
C++具体的优势和特性,还得在今后的学习中,慢慢领悟。
🥔2.2 C++的应用领域
- 游戏开发:著名的游戏引擎Unity3D使用C++作为其核心引擎的开发语言。另外,著名的游戏《英雄联盟》和《CS》也是使用C++进行开发的。
- 嵌入式系统:无人机制造商DJI的飞控系统是用C++编写的。汽车电子领域中,自动驾驶系统和车载娱乐系统通常也使用C++进行开发。
- 科学计算和数值分析:开源库Eigen是一个用于线性代数计算的C++库,被广泛用于科学计算和数值分析任务。另外,CERN的粒子物理研究中使用的ROOT数据分析框架也是用C++编写的。
- 金融和高频交易:高频交易公司使用C++来开发快速而高效的交易系统。例如,金融公司Jane Street就是使用C++作为其主要交易系统的开发语言之一。
- 图形界面和桌面应用:跨平台的应用开发框架Qt是用C++编写的。许多知名的软件,如Adobe Photoshop、Autodesk Maya和Microsoft Office套件,也使用C++进行桌面应用程序的开发。
- 数据库系统:开源关系型数据库管理系统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号晚“离开”了我们,博主几个月前还听老师谈起了这位前辈,跑去前辈的技术论坛学习。
希望前辈路走好!也希望朋友们注意身体,平安健康。
本期就分享到这里,我们下期再见,如果还有下期的话。
相关文章:

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

如何理解工业互联网与智能制造,怎么共建智慧工厂?
第六届数字中国建设峰会26日在福州开幕,在这个数字化新技术的变革风口,企业如何把握机遇,借工业互联网和智能制造实现智慧工厂建设? 探讨三个问题: 什么是工业互联网、智能制造、智慧工厂;它们三者之间的…...

主机访问不到虚拟机(centos7)web服务的解决办法
目录 一、背景 二、解决办法 2.1、配置虚拟机防火墙 2.2、修改虚拟机网络编辑器 一、背景 主机可以访问外网,虚拟机使用命令:curl http://网址,可以访问到web服务 ,主机使用http://网址,访问不到虚拟机(…...
第四章 ActiveMQ与SpringBoot集成——ActiveMQ笔记(动力节点)
第四章 ActiveMQ 与 SpringBoot 集成 4-1 ActiveMQ 与 SpringBoot 集成集成配置 1、加载 spring boot 的 activeMQ 的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </de…...

Halcon 算子 select_shape_std 和 select_shape_xld区别
文章目录 1 select_shape_std 算子介绍2 select_shape_xld算子介绍3 select_shape_std 和 select_shape_xld区别4 Halcon 算子的特征 Features 列表介绍1 select_shape_std 算子介绍 select_shape_std (Operator) Name select_shape_std — Select regions of a given shape.Si…...
【Java基础】匿名内部类
🎊专栏【Java基础】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The truth that you leave】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🎁什么是匿名内部类 &#x…...

基于Freertos的ESP-IDF开发——6.使用DHT1温湿度传感器
基于Freertos的ESP-IDF开发——6.使用DHT1温湿度传感器 0. 前言1. DHT11驱动原理2. 完整代码3. 演示效果4. 其他FreeRtos文章 0. 前言 开发环境:ESP-IDF 4.3 操作系统:Windows10 专业版 开发板:自制的ESP32-WROOM-32E 准备一个DHT11温湿度传…...

C++——模板初阶
文章目录 一.泛型编程二.函数模板1.函数模板的概念2.函数模板的格式3.函数模板的原理4.函数模板的实例化(1)隐式实例化(2)显式实例化 5.模板参数的匹配原 三.类模板1.类模板的定义格式2.类模板的实例化 前言: 本章我们…...

【TOOLS: Linux与windows及linux与linux之间文件传输常用方法及命令】
文章目录 1.1.1 Windows和VirtualBox(Ubuntu)之间文件穿传输方法1.1.2 SCP 文件传输方法1.1.3 FTP 文件传输方法 1.1.1 Windows和VirtualBox(Ubuntu)之间文件穿传输方法 1)设置 virtualbox 中的共享文件夹,用户可以在windows某个盘下创建自己的共享文件…...

【博览群书】《实战大数据》——属于我的第一本大数据图书
文章目录 前言简介目录其他 前言 Hello家人们,博主前不久参加了CSDN图书馆和机械工业出版社联合举办的图书类活动,很荣幸在活动中获得了属于自己的第一本大数据图书,《实战大数据—— 分布式大数据分析处理系统开发与应用》。作为大数据专业…...

【计算机组成原理】实验二
文章目录 实验二 运算器实验一、实验目的二、实验原理三、运算器功能编码四、实验内容任务一 算术运算任务二 逻辑运算任务三 移位运算 实验二 运算器实验 一、实验目的 完成算术、逻辑、移位运算实验,熟悉ALU运算类型的控制位运用。实验仪器:JTHS-A …...

hive数据库hql基础操作02
1.内部表和外部表 默认情况下创建的表就是内部表,Hive拥有该表的结构和文件。换句话说,Hive完全管理表(元数据和数据)的生命周期,类似于RDBMS中的表。当你删除内部表时,它会删除数据以及表的元数据。可以使…...

门电路OD门
漏极开路输出的门电路(OD门) 为了满足输出电平的变换,输出大负载电流,以及实现“线与”功能,将CMOS门电路的输出级做成漏极开路的形式,称为漏极开路输出的门电路,简称OD(Open&#x…...
没有域名,一个服务器Nginx怎么部署多个前端项目
因为没有域名,所以用路径来作区分, 主项目:直接根路由访问该项目,与正常配置无任何差别从项目:此处设置/new路径,为从项目,所有从项目访问路径均要加上/new ①修改Nginx配置文件 Nginx 配置文…...

城市内涝的原因和解决措施,内涝监测预警助力城市防涝度汛
城市内涝是城市化进程中最遇到的自然灾害,城市内涝不仅会对市民生活造成困扰,也会对城市基础设施和经济发展产生不利影响。因此,及时监测城市内涝现象,对于城市管理和城市安全具有重要意义。本文将深入探讨城市内涝的原因以及针对…...

8年测试总结,性能测试问题大全,这些问题你应该认清的...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 响应时间VS吞吐量…...

RabbitMQ集群安装
RabbitMQ集群安装 1.前言 OS: CentOS Linux release 7.9.2009 (Core) 机器: IPnodecpu内存存储10.106.1.241max-rabbitmg-018 核16 G100 G10.106.1.242max-rabbitmg-028 核16 G100 G10.106.1.243max-rabbitmg-038 核16 G100 G 因为操作系统版本是 centos7,所以…...
面试:link和@import的区别
1:link是XHTML标签,除了加载CSS外,还可以加载RSS;import只能加载CSS 2:link引入CSS时,在页面载入时同时加载;import需要页面完全载入后加载,可能会出行闪屏 3:link是XHTML标签,无兼容…...

图片隐写(一)
文件隐藏 binwalk binwalk -e filename foremost foremost filename steghide & stegseek Install sudo apt-get install steghidestegseek Use steghide extract -sf filename -p passwordtime stegseek secret.file aaa.txt dd 文本隐藏 二进制文件末尾 or 文…...

Vivado 下 IP核 之ROM 读写
目录 Vivado 下 IP核 之ROM 读写 1、实验简介 2、ROM IP 核简介 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 3.2、单端口 ROM 的配置 3.3、双端口 ROM 的配置 3.4、ROM IP 核的调用 (1)ROM 顶层模块代码 (2)ROM IP 核仿…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...