C++的介绍与认识

目录

前言

1.什么是C++

2.C++的发展历史

3.C++参考文档

4.C++重要性

4.1C++特点

4.2编程语言排行榜

4.3 C++的应用领域

5.C++学习指南

1. 基础知识

2. 面向对象编程(OOP)

3. 泛型编程

4. 标准库(STL)

结束语

前言

学习了C语言的知识,今天小编将进军C++的知识,本篇博客可能略微枯燥,主要是对C++的相关介绍和认识,以及学习路线,下节将正式进入C++的学习。

1.什么是C++

C++起源于C语言,但通过引入面向对象编程(OOP)和泛型编程的特性,使其功能更为丰富和灵活。它被广泛应用于系统/应用程序开发、游戏开发、嵌入式系统等领域,因其性能优越和可扩展性而受到程序员的青睐。

2.C++的发展历史

C++的起源可以追溯到1979年,当时Bjarne Stroustrup(本贾尼·斯特劳斯特卢普,这个翻译的名字不同的地方可能有差异)在贝尔实验室从事计算机科学和软件工程的研究工作。面对项目中复杂的软件开发任务,特别是模拟和操作系统的开发工作,他感受到了现有语言(如C语言)在表达能力、可维护性和可扩展性方面的不足。
1983年,Bjarne Stroustrup在C语言的基础上添加了面向对象编程的特性,设计出了C++语言的雏形,此时的C++已经有了类、封装、继承等核心概念,为后来的面向对象编程奠定了基础。这一年该语言被 正式命名为C++。
在随后的几年中,C++在学术界和工业界的应用逐渐增多。一些大学和研究所开始将C++作为教学和研 究的首选语言,而一些公司也开始在产品开发中尝试使用C++。这一时期,C++的标准库和模板等特性 也得到了进一步的完善和发展。
C++的标准化⼯作于1989年开始,并成立了一个ANSI和ISO(International Standards
Organization)国际标准化组织的联合标准化委员会。1994年标准化委员会提出了第一个标准化
案。在该草案中,委员会在保持斯特劳斯特卢普最初定义的所有特征的同时,还增加了部分新特征。
在完成C++标准化的第一个草案后不久,STL(Standard Template Library)是惠普实验室开发的一系 列软件的统称。它是AlexanderStepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。在通过了标准化第一个草案之后,联合标准化委员会投票并通过了将STL包含到C++标准中的提议。STL对C++的扩展超出C++的最初定义范围。虽然在标准中增加STL是个很重要的决定,但也因此延缓了C++标准化的进程。
1997年11月14日,联合标准化委员会通过了该标准的最终草案。1998年,C++的ANSI/IS0标准被投入使用。
5b45fbb6d1a14b4bbb9b5cd1a34f110d.png

3.C++参考文档

https://legacy.cplusplus.com/reference/
https://zh.cppreference.com/w/cpp
https://en.cppreference.com/w/
说明:第一个链接不是C++官方文档,标准也只更新到C++11,但是以头文件形式呈现,内容比较易看好懂。后两个链接分别是C++官方文档的中文版和英文版,信息很全,更新到了最新的C++标准,但是相比第一个不那么易看;几个文档各有优势,可以结合着使用。

4.C++重要性

C++是一种具有广泛应用和深远影响的编程语言,无论是系统开发、游戏编程、还是嵌入式系统,C++都发挥着至关重要的作用。

4.1C++特点

1. 高性能和效率
C++的一个显著特点是其高性能和高效性。通过直接访问硬件和内存,C++允许开发者编写优化的代码,从而实现出色的运行速度和资源管理。这使得C++在需要高性能计算的领域中,如游戏开发、图形渲染和科学计算,成为首选的编程语言。
2. 面向对象编程
C++引入了面向对象编程(OOP)的概念,包括类、继承和多态性。这使得开发者可以通过抽象和封装来提高代码的可维护性和可扩展性。面向对象编程使得复杂系统的设计和实现变得更加直观和模块化。
3. 泛型编程和模板
C++的模板机制允许编写泛型代码,这不仅提高了代码的复用性和灵活性,还减少了冗余代码的编写。通过模板,开发者可以创建通用的数据结构和算法,从而提高开发效率和代码质量。
4. 标准库(STL)
C++标准库(STL)提供了丰富的工具集,包括各种容器(如vector、map、set)和算法(如排序、查找)。STL极大地简化了数据管理和操作,使开发者能够专注于核心业务逻辑,而无需从头实现复杂的数据结构和算法。
5. 广泛的应用领域
C++在多个领域中都有着广泛的应用:
系统编程:由于其高效性,C++常用于操作系统、驱动程序和底层系统组件的开发。
游戏开发:C++的高性能和强大的图形处理能力使其成为游戏引擎开发的首选语言,如Unreal Engine和Unity。
嵌入式系统:C++的灵活性和低级硬件访问能力使其适用于嵌入式系统和物联网设备的开发。 - ** 金融工程:在高频交易和金融建模中,C++因其高性能和可靠性被广泛使用。
6. 社区和生态系统
C++拥有一个庞大的开发者社区和丰富的生态系统。从开源库和框架,到在线资源和教程,C++开发者可以轻松找到所需的支持和工具。这种强大的社区支持使得C++在现代编程语言中保持了持久的生命力和创新力。

4.2编程语言排行榜

TIOBE排⾏榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如
Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube和Baidu(百度)统计出排名数据,只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。
2024年6月TIOBE发布的编程语言排行榜
54444c88f2f8429989204b5141712b1f.png

4.3 C++的应用领域

C++的应用领域服务器端、游戏(引擎)、机器学习引擎、音视频处理、嵌入式软件、电信设备、金融应用、基础库、操作系统、编译器、基础架构、基础工具、硬件交互等很多方面都有。
1. 大型系统软件开发。如编译器、数据库、操作系统、浏览器等等
2. 音视频处理。常见的音视频开源库和方案有FFmpeg、WebRTC、Mediasoup、ijkplayer,音视频 开发最主要的技术栈就是C++。
3. PC客户端开发。一般是开发Windows上的桌面软件,⽐如WPS之类的,技术栈的话⼀般是C++和QT,QT 是一个跨平台的 C++图形用户界面(Graphical User Interface,GUI)程序。
4. 服务端开发。各种大型应用网络连接的高并发后台服务。这块Java也比较多,C++主要用于一些对性能要求比较高的地方。如:游戏服务、流媒体服务、量化高频交易服务等
5. 游戏引擎开发。很多游戏引擎就都是使用C++开发的,游戏开发要掌握C++基础和数据结构,学习图形学知识,掌握游戏引擎和框架,了解引擎实现,引擎源代码可以学习UE4、Cocos2d-x等开源引擎实现
6. 嵌入式开发。嵌入式把具有计算能力的主控板嵌入到机器装置或者电子装置的内部,通过软件能够控制这些装置。比如:智能手环、摄像头、扫地机器人、智能音响、门禁系统、车载系统等等,粗略⼀点,嵌入式开发主要分为嵌入式应用和嵌入式驱动开发。
7. 机器学习引擎。机器学习底层的很多算法都是用C++实现的,上层用python封装起来。如果只想准备数据训练模型,那么学会Python基本上就够了,如果想做机器学习系统的开发,那么需要学 会C++。
8. 测试开发/测试。每个公司研发团队,有研发就有测试,测试主要分为测试开发和功能测试,测试开发一般是使用一些测试工具(selenium、Jmeter等),设计测试用例,然后写⼀些脚本进行自动化测试,性能测试等,有些还需要自行开发一些测试用具。功能测试主要是根据产品的功能,设计测试用例,然后手动的方式进行测试。

5.C++学习指南

1. 基础知识

在学习C++时,首先要掌握其基本语法和语义。C++继承了C语言的许多特性,如变量声明、控制流(if-else、for、while循环)、基本数据类型(例如int、double、string)等。
变量和数据类型:了解不同的数据类型和如何声明变量,以及它们在内存中的存储方式和限制。
运算符:包括算术运算符、逻辑运算符和比较运算符的使用方法。
流控制:理解条件语句(if-else)、循环语句(for、while)及其在编程中的应用。

2. 面向对象编程(OOP)

C++的一个重要特性是面向对象编程,这使得代码更易于维护、扩展和重用。
重要的OOP概念:
类与对象:学习如何定义类和创建对象,以及如何使用成员函数和数据成员。
继承与多态:掌握如何建立继承关系,派生类的定义,以及多态如何实现基类指针的多种形态。 

3. 泛型编程

泛型编程通过模板(templates)提供了一种编写通用代码的方法,使得数据结构和算法可以与数据类型无关地工作。
重要的概念包括: 函数模板和类模板:了解如何定义和使用模板,以及如何通过模板实现通用的算法和数据结构。

4. 标准库(STL)

C++标准库(STL)提供了丰富的数据结构和算法,使得开发者能够更高效地进行编程。
一些常用的STL组件包括: 容器:例如vector、map、set等,用于存储和管理数据。
算法:包括排序、查找、迭代等,能够直接应用于STL容器。 

结束语

相信通过本篇博客,大家对C++有了进一步的理解和认识,最后感谢大家的阅读与支持!!!

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

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

相关文章

亚马逊云科技EC2简明教程

💡 完全适用于新手操作的Amazon EC2引导教程 简述 在亚马逊云科技中,存在多种计算服务,在此,我们将会着重讨论Amazon EC2(以下简称EC2),EC2作为亚马逊云科技的明星产品、核心产品,是大多数开发者和企业用…

高考后暑假新选择:从AI聊天机器人开发入门IT领域

你好,我是三桥君 七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。 不知道这些有志于踏入IT领域的高考少年们&…

即时通讯平台项目测试(主页面)

http://8.130.98.211:8080/login.html项目访问地址:即时通讯平台http://8.130.98.211:8080/login.html 本篇文章进行项目主页面的测试。 在测试前需要先对待测内容进行分类,按照功能进行分类可以分为:个人信息设置、发送/接收消息、添加好友…

Shell:一行命令如何实现采集某一进程一段时间内CPU使用率

首先,能想到使用top查看进程的CPU使用率,以java进程编号251346为例进行介绍 top -d 1 -p 251346 -d 表示每秒采集一次 CPU使用率是显示出来了,但这样只能在屏幕上原地刷新,我们希望能把数据每时每刻的数据都保存下来,…

凌风云 - 十大网盘资源搜索 Ver 6.0 版正式上线

《凌风云》作为网盘资源专业搜索领域的佼佼者,汇聚了国内十大网盘的丰富资源,凌风云搜索弥补其他搜索引擎可能无法搜索到相关资源的缺陷,作为专业的搜索引擎服务网络平台,您只需输入关键词,通过智能算法精准匹配&#…

第六次作业

一、视图作业 1、创建视图v_emp_dept_id_1,查询销售部门的员工姓名和家庭住址 2、创建视图v_emp_dept,查询销售部门员工姓名和家庭住址及部门名称。 3、创建视图v_dept_emp_count(dept_name,emp_count,avg_salay),统计每个部门人数并计算平均…

Pandas基础03:数据排序与增删

上一节我们介绍了通过按行索引和按列索引找出相关数据的方法。本章节将进一步介绍如何筛选数据,并对数据进行排序、增删的方法。 示例表格和上一节相同。 1.数据筛选 Python中可以通过区域筛选,即获取某几行某几列的方法得到数据。例如,我要…

pwn误区的buffer

注意栈顶是闭合的,栈底才是打开的 栈图: |--------------------------| | | | | buffer溢出的时候,是从栈底到栈顶方向

LINUX命令行curl指令与python内置urllib模块

urllib是python御用的易用的轻便模块,curl是Linux功能强大的命令行工具,都是参与Web的利器。 (笔记模板由python脚本于2024年07月10日 18:41:12创建,本篇笔记适合喜欢Python和Linux的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&…

最佳 iPhone 解锁软件工具,可免费下载用于电脑操作的

业内专业人士表示,如果您拥有 iPhone,您一定知道忘记锁屏密码会多么令人沮丧。由于 Apple 的安全功能强大,几乎不可能在没有密码或 Apple ID 的情况下访问锁定的 iPhone。 “当我忘记密码时,如何在没有密码的情况下解锁iPhone&am…

仕考网:公务员考试的录取流程

公务员考试的录取流程分很多个阶段,以下是流程介绍: 1. 报名阶段:考生需根据公布的招聘信息和岗位要求进行报名。 2. 笔试阶段:公务员笔试,包括申论和行测两部分。 3. 成绩公布与面试资格:笔试合格者将获…

编译原理:词法分析器 Flex工具的使用(简单易懂)

目录 词法分析器 & Flex工具的使用背景:编译器和解释器概念区别编译器的实现 词法分析器(Lexer)工具(Flex)安装Flex目标程序:verilog代码Flex程序格式DeclarationsDefinitionsRulesUser subroutines如何通过flex读入文件? 完整程序编译&a…

Unity入门之重要组件和API(3) : Transform

前言 Transform类主要处理游戏对象(GameObject)的位移、旋转、缩放、父子关系和坐标转换。 1.位置和位移 1.1必备知识点:Vector3 Vector3 主要用来表示三维坐标系中的一个点或者一个向量。 【声明】 Vector3 v1 new Vector3(); Vector3 v2 new Vector3(10, 10…

ScrapySharp框架:小红书视频数据采集的API集成与应用

引言 随着大数据时代的到来,数据采集成为了互联网企业获取信息的重要手段。小红书作为一个集社交和电商于一体的平台,其丰富的用户生成内容(UGC)为数据采集提供了丰富的资源。本文将介绍如何使用ScrapySharp框架进行小红书视频数…

便携式气象站的应用领域

在气象观测的广阔天地中,便携式气象站不仅集便携性、多功能性和高精度于一身,还以其快速部署、实时监测和数据传输等特点,在科研教学、环境监测、农业生产和灾害预警等多个领域发挥着重要作用。 便携式气象站的基本概念 便携式气象站&#…

高智能土壤养分检测仪:农业生产的科技新助力

在科技日新月异的今天,农业领域也迎来了革命性的变革。其中,高智能土壤养分检测仪作为现代农业的科技新助力,正逐渐改变着传统的农业生产方式,为农民带来了前所未有的便利与效益。 高智能土壤养分检测仪,是一款集高科技…

职场必备神器!图片提取文字!OCR文字识别助手:让灵感自由流动!

Hey,创意达人们!是否曾在网页上看到令人心动的设计灵感,却因无法复制粘贴而苦恼?别担心,今天我要给你们安利一个办公小秘密——OCR文字识别助手,让你的灵感自由流动,创意无限! 功能…

深入了解代理IP常见协议:区别与选择

代理服务器在网络使用中扮演着重要的角色,是您设备和互联网之间的中间层。它不仅可以增强网络访问的安全性和隐私保护,还可以提供许多灵活的应用。使用代理时,不同的协议类型对数据交换具有不同的规则和特征。常见的代理协议包括HTTP代理、HT…

轻松掌握图片压缩技巧,释放存储空间!

前言 在这个充满视觉冲击的时代,我们每天都在创造和分享图片。但你是否发现,手机和电脑的存储空间越来越不够用了?图片文件过大,不仅占用空间,还影响传输速度和网页加载。今天,就让我来教你几招&#xff0…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署MuseV (踩完了所有的坑):基于视觉条件并行去噪的无限长度和高保真虚拟人视频生成

目录 下载项目 创建虚拟环境 启动虚拟环境&执行项目依赖 基于DOCKER的尝试 A. 安装引擎 B. 下载桌面安装包 C. 安装桌面包 用Docker运行MuseV 1. 拉取镜像 ​编辑 2. 运行Docker镜像 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收…