C++语言编程————C++概述

1. C++语言发展史

20世纪60年代, 剑桥大学 Martin Richards为计算机软件人员在开发系统软件时,作为记述语言使用而开发了BCPL语言;

1970年, Bell实验室 Ken Thompson在继承BCPL语言的许多优点的基础上发明了实用的B语言;

1972年, Bell实验室的Dennis Ritchie和Briankernighan在B语言的基础上,作了进一步的充实和完善,设计出了C语言;

1980年:贝尔实验室开始对C进行改进和扩充――带类的C

1983年:取名C++

1994年:制定ANSI(美国国家标准化协会:American National Standards Institute)C++标准草案

1998年:C++的ANSI/ISO标准被投入使用,——标准的C++,这个版本的C++被认为是标准C++。所有的主流C++编译器都支持这个版本的C++,包括微软的Visual C++和Borland公司的C++Builder。

2. C与C++语言的比较

C语言的主要特点是:

1.C语言是一种结构化的程序设计语言,语言本身简洁、 使用灵活方便。既适用于设计和编写大的系统程序,又 适用于编写小的控制程序,也适用科学计算。

2.它既有高级语言的特点,又具有汇编语言的特点。 运算符丰富,除了提供对数据的算术逻辑运算外,还提供了二进制的位运算。并且也提供了灵活的数据结构。 用C语言编写的程序表述灵活方便,功能强大。用C语 言开发的程序,其结构性好,目标程序质量高,程序执行效率高

3、程序的可移植性好。用C语言在某一种型号的计算机上开发的程序,基本上可以不作修改,而直接移植到 其它型号和不同档次的计算机上运行。

4、程序的语法结构不够严密,程序设计的自由度大。 这对于比较精通C语言的程序设计者来说,可以设计出 高质量的非常通用的程序。但对于初学者来说,要能比 较熟练运用C语言来编写程序,并不是一件容易的事情。 与其它高级语言相比而言,调试程序比较困难。

C++是静态类型的,编译型的高级的编程的语言,支持面向对象编程,面向过程编程及泛型编程。

C语言的缺陷是:

C语言对数据类型检查的机制比较弱;缺少支持代码重用的 结构;比较适用于解决小的问题,对于大规模编程,程序模 块之间的协调性差,程序的可重用性、程序的安全、健壮以 及可维护性、可扩充性差,随着软件工程规模的扩大,难以适应开发特大型规模的程序等。

使用随着C语言应用的推广,C语言存在的缺陷或不足也开始慢慢流露出来,并越来越受到大家的关注

注:

为了克服C语言本身存在的缺点,并保持C语言简洁、高效,可移植的特点,C++ 语言又相继引入类型检查,函数及运算符重载、引用、 虚函数等一系列功能,使C++的功能日趋完善。

C是C++的子集, C++不仅包括了整个C,C的全部特征、属性、 优点,还有一些优点:

1.修补的C语言的一些漏洞,提供更好的类型检查机制和编译分析;

2.生成目标程序质量高,程序执行效率较高;

3.提供异常处理机制,简化程序的出错处理;

4.函数可以重载以及使用缺省参数;

5.提供模板机制:类模板和函数模板实现泛型编程;

6.提供继承,派生机制实现代码的重用;

但是两者最大的区别在于C++ 引入了面向对象的编程思想

3.C++特点

1、C++ 是一种静态类型的、编译式的、通用的、 大小写敏感的编程语言,支持过程化编程、面向对 象编程和泛型编程的高级语言。

2、C++不仅拥有计算机高效运行的实用性特征, 同时还致力于提高大规模程序的编程质量与程序设 计语言的问题描述能力。

4. C++与python比较

C++是多范式编程语言。它不仅支持传统的面向过程编程,也支持面 向对象编程,而且引入泛型编程,C++运行效率较高,同时能够比较容 易地建立大型软件,适合对效率要求高的软件,比如机器学习中的神经 网络,大型游戏内核编程等等。

python适合小工具小程序快速开发,无论是网站还是小游戏都非常方便。 但python的脚本的运行效率较低,不适合对运行效率要求较高的程序; Python是一种脚本语言,是解释执行的,不需要经过编译,所以很方便 快捷,且能够很好地跨平台,写一些小工具小程序特别合适。

而C++则是一种需要编译后运行语言,在特定的机器上编译后在特定的 机上运行,运行效率高,安全稳定。但编译后的程序一般是不跨平台的。

5. 应用领域

1、游戏开发领域

目前很多游戏客户端都是基于C++开发的, 三维游戏领域的计算量 是十分庞大的,底层的数学全都是矩阵变换,要想画面精美、 内容丰 富、游戏的实时高,这些高难度需求让我们只能选择C++语言。

2、服务器端开发领域

很多互联网公司的后台服务器程序也都是基于C++开发的,而且大部分都是 linux,unix等类似操作系统。

3、在嵌入式物联网领域

现如今的硬件比以前已经有很大的进步了,存储器的容量也很大, 这时候我们就可以使用C++来编写更为复杂的实时程序。

4、VR及人工智能领域

虚拟显示这个领域一直在发展,目前VR眼镜比较火,需要大量基于这些的 C++开发。人工智能领域需要做一些复杂的运算,需要用c++来开发算法,主要因为其效率高。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0开始的opencv之旅(1)cv::Mat的使用

目录 Mat 存储方法 创建一个指定像素方式的图像。 尽管我们完全可以把cv::Mat当作一个黑盒,但是笔者的建议是仍然要深入理解和学习cv::Mat自身的构造逻辑和存储原理,这样在查找问题,或者是遇到一些奇奇怪怪的图像显示问题的时候能够快速的想…

免登录游客卡密发放系统PHP网站源码

源码介绍: 这是一个简单易用的卡密验证系统,主要功能包括: 卡密管理和验证,多模板支持,响应式设计,验证码保护,防刷机制,简洁的用户界面, 支持自定义模板,移…

LeetCode - 初级算法 数组(旋转数组)

旋转数组 这篇文章讨论如何通过编程实现数组元素的旋转操作。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例: 输入: nums = [1,2,3,

BOC调制信号matlab性能仿真分析,对比功率谱,自相关性以及抗干扰性

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…

【从零开始入门unity游戏开发之——C#篇41】C#迭代器(Iterator)——自定义类实现 foreach 操作

文章目录 前言一、什么是迭代器?二、标准迭代器的实现方法1、自定义一个类CustomList2、让CustomList继承IEnumerable接口3、再继承IEnumerator接口4、完善迭代器功能5、**foreach遍历的本质**:6、在Reset方法里把光标复原 三、用yield return语法糖实现…

WordPress新安装只安装主题后发现只有首页能打开,其他路由页面都是404,并且Elementor都打不开

找到wordpress安装路径的这个文件&#xff0c;有发现里面没有内容&#xff0c;添加下面内容保存&#xff0c;重启服务器即可 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILEN…

uniapp中使用ruoyiPlus中的加密使用(crypto-js)

package.json中添加 "crypto-js": "^4.2.0", "jsencrypt": "^3.3.2",但是vue2中使用 import CryptoJS from cryptojs; 这一步就会报错 参照 参照这里&#xff1a;vue2使用CryptoJS实现信息加解密 根目录下的js文档中新增一个AESwork.…

无需训练!多提示视频生成最新SOTA!港中文腾讯等发布DiTCtrl:基于MM-DiT架构

文章链接&#xff1a;https://arxiv.org/pdf/2412.18597 项目链接&#xff1a;https://github.com/TencentARC/DiTCtrl 亮点直击 DiTCtrl&#xff0c;这是一种基于MM-DiT架构的、首次无需调优的多提示视频生成方法。本文的方法结合了新颖的KV共享机制和隐混合策略&#xff0c;使…

RabbitMQ基础篇之快速入门

文章目录 一、目标需求二、RabbitMQ 控制台操作步骤1.创建队列2.交换机概述3.向交换机发送消息4.结果分析5.消息丢失原因 三、绑定交换机与队列四、测试消息发送五、消息查看六、结论 一、目标需求 新建队列&#xff1a;创建 hello.queue1 和 hello.queue2 两个队列。消息发送…

ESP32S3 + IDF 5.2.2 扫描WiFi

ESP32S3 IDF 5.2.2 扫描WiFi 目录 1 资料 2 通过Wi-Fi库扫描附近的网络 2.1 通过idf命令创建工程 2.2 编写测试用例 2.3 优化测试用例 3 小结 1 资料 在ESP平台基于IDF开发WiFi相关功能&#xff0c;主要就是基于IDF的Wi-Fi库进行二次开发。可供参考的官方资料&#xff…

2025-1-2-sklearn学习(30)模型选择与评估-验证曲线: 绘制分数以评估模型 真珠帘卷玉楼空,天淡银河垂地。

文章目录 sklearn学习(30) 模型选择与评估-验证曲线: 绘制分数以评估模型30.1. 验证曲线30.2. 学习曲线 sklearn学习(30) 模型选择与评估-验证曲线: 绘制分数以评估模型 文章参考网站&#xff1a; https://sklearn.apachecn.org/ 和 https://scikit-learn.org/stable/ 每种估…

统信系统设置代理的问题

统信系统设置代理的问题 问题表现方式一方式二 问题表现 统信系统下有系统代理和应用代理两个代理。设置系统代理时&#xff0c;git不能经过代理拉取代码。但是设置应用代理时&#xff0c;可以用git通过代理拉代码。 这是系统代理&#xff0c;在这里设置 ip 端口&#xff0c;…

STM32-笔记19-串口打印功能

复制项目文件夹03-流水灯&#xff0c;重命名为19-串口打印功能 打开项目 在主函数中&#xff0c;添加头文件、和串口初始化函数&#xff08;设置波特率&#xff09;和输出函数&#xff0c;如图所示&#xff1a; 软件部分就设置好了 下面是硬件部分 接线&#xff1a;使用USB…

JavaWeb——MySQL-DML(1/3)-添加数据insert(DML 操作概述、INSERT 语句插入数据、语句演示、总结)

目录 DML 操作概述 INSERT 语句插入数据 INSERT 语句基础语法 INSERT 语句演示 注意事项 总结 DML 操作概述 DML 简介 DML&#xff08;Data Manipulation Language&#xff09;即数据操作语言&#xff0c;用于对数据库表中的数据进行增删改操作&#xff0c;包括添加数据&…

Docker图形化界面工具Portainer最佳实践

前言 安装Portainer 实践-基于Portainer安装redis-sentinel部署 Spring Boot集成Redis Sentinel 前言 本篇文章笔者推荐一个笔者最常用的docker图形化管理工具——Portainer。 安装Portainer 编写docker-compose文件 Portainer部署的步骤比较简单&#xff0c;我们还是以…

Wonder Dynamics技术浅析(五):虚拟场景描述解析

虚拟场景描述解析模块是 Wonder Dynamics 平台的核心组件之一&#xff0c;其主要功能是将用户输入的自然语言场景描述转换为机器可理解的语义表示&#xff0c;为后续的虚拟场景生成提供基础数据。 一、文本预处理&#xff08;Text Preprocessing&#xff09; 1. 目标: 对用户…

基于SpringBoot在线竞拍平台系统功能实现十一

## 一、前言介绍&#xff1a;1.1 项目摘要 随着网络技术的飞速发展和电子商务的普及&#xff0c;竞拍系统作为一种新型的在线交易方式&#xff0c;已经逐渐深入到人们的日常生活中。传统的拍卖活动需要耗费大量的人力、物力和时间&#xff0c;从组织拍卖、宣传、报名、竞拍到成…

JavaScript基础 -- 变量、作用域与内存

1 原始值与引用值 原始值就是最简单的数据&#xff0c;引用值则是由多个值构成的对象。在把一个值赋给变量时&#xff0c;JavaScript引擎必须要确定这个值是原始值还是引用值 原始值大小固定&#xff0c;保存在栈内存上&#xff1b;引用值是对象&#xff0c;存储在堆内存上 它…

密钥登录服务器

1. 生成 SSH 密钥对 如果您还没有生成密钥对&#xff0c;可以使用以下命令生成&#xff1a; ssh-keygen 在 root 用户的家目录中生成了一个 .ssh 的隐藏目录&#xff0c;内含两个密钥文件&#xff1a;id_rsa 为私钥&#xff0c;id_rsa.pub 为公钥。 在提示时&#xff0c;您可…

nginx 部署前端vue项目

&#x1f468;‍⚕ 主页&#xff1a; gis分享者 &#x1f468;‍⚕ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕ 收录于专栏&#xff1a;前端工程师 文章目录 一、&#x1f353;什么是nginx&#xff1f;二、&#x1f353;nginx 部署…