【C++进阶之路】初始C++

news2025/2/27 8:20:08

文章目录

  • 一.C++的发展历史
    • 时代背景
    • 产生原因
    • 发型版本
  • 二.C++的应用场景
  • 三.C ++的学习成本
    • C++的难度
    • C++的学习阶段
    • 21天精通C++的梗

一.C++的发展历史

时代背景

  • 20世纪60年代——软件危机。
  • 部分原因:C语言等计算机语言是面向过程语言,在编写大型程序需要高度抽象与建模,此类语言不合适。
  • 初步理论:计算机界提出了面向对象的思想。

产生原因

  • 1979年,本贾尼(全名:本贾尼·斯特劳斯特卢普——C++之父)准备博士论文期间,发现Simula语言(被公认是当时的面向对象语言)实用性不强。
  • 不久之后开始"C with classes"(C++的前身)——在C语言的基础上开发,将面向对象的思想引入,使其具备类、简单继承、内联机制、函数默认参数以及强类型检查等特性。
  • 1983年,"C with classes"更名为C++/C plus plus

C++之父
在这里插入图片描述

发型版本

C with classes类及派生类、公有和私有成员、类的构造和析构、友元、内联函数、赋值运算符重载等
C++1.0添加虚函数概念,函数和运算符重载,引用、常量等
C++2.0更加完善支持面向对象,新增保护成员、多重继承、对象的初始化、抽象类、静态成员以及const成员函数
C++3.0进一步完善,引入模板,解决多重继承产生的二义性问题和相应构造和析构的处理
C++98C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
C++03C++标准第二个版本,语言特性无大改变,主要:修订错误、减少多异性
C++05C++标准委员会发布了一份计数报告(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++的标准是由:C++标准委员会负责的

C++初期计划5年一个大更新,但讽刺的是,在C++05时,计划有变,更名为“C++0x”,在2010年发布一个大更新,结果后来到2011年才迎来了更新。

注意:C# 是由 java 发展而来,跟C++的关系很小,而java是由C++发展而来。

二.C++的应用场景

  1. 操作系统以及大型系统软件开发
  2. 服务器端开发
  3. 人工智能
  4. 网络工具
  5. 游戏开发
  6. 嵌入式领域
  7. 数字图像处理
  8. 分布式应用
  9. 移动设备

三.C ++的学习成本

C++的难度

  • C++是最难学的计算机语言之一吗?
  • 答案:毋庸置疑,是的。
  • C++比java简单吗?
  • 答案:C++跟java的难度,在前期C++难,java简单,到后期难度相同,总的学习成本是一样的

C++的学习阶段

摘自网上的《程序员》刊登的拙文《C++强大背后》的最后一段

  • 第一个层次,C++基础 (平平常常)

挑选一本入门书籍,如《C++ Primer》、《C++大学教程》或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;

  • 第二个层次,正确高效的使用C++ (驾轻就熟)

此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、
《EffectiveSTL》及《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++的梗

在这里插入图片描述

  • 每一门技术都值得,长时间的打磨,方可达到杰出的水平。

在这里插入图片描述

  • 因此我们需要一定的耐心和毅力,在C++的学习路上慢慢打磨我们自己,做好该做的,剩下的交给时间,共勉!

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

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

相关文章

HTML中表格标签<table><tr><tb><th>中单元格的合并问题

前情知晓 层级关系如下&#xff1a; <table><tr><td> </td><th> </th></tr></table> <table>...</table> 用于定义一个表格开始和结束 <tr>...</tr> 定义一行标签&#xff0c;一组行标签内可以建立…

【前端】从零开始读懂Web3

序言 用心生活&#xff0c;用力向上&#xff0c;微笑前行&#xff0c;就是对生活最好的回馈。 本专栏说明&#xff1a; 主要是记录在分享知识的同时&#xff0c;不定时给大家送书的活动。 参与方式&#xff1a; 赠书数量&#xff1a;本次送书 3 本&#xff0c;评论区抽3位小伙伴…

Python进阶特性(类型标注)

1.4 Python进阶特性(类型标注) 1.4.1 类型标注介绍 Python属于动态类型语言&#xff0c;只有在运行代码的时候才能够知道变量类型&#xff0c;那么这样容易产生传入参数类型不一致的问题&#xff0c;导致出现意想不到的bug。这也是动态类型语言天生的一个问题。 所以在Python…

【Spring】— Spring中Bean的装配方式

Spring中Bean的装配方式Bean的装配方式1.基于XML的装配2.基于Annotation的装配3.自动装配Bean的装配方式 Bean的装配可以理解为依赖关系注入&#xff0c;Bean的装配方式即Bean依赖注入的方式。Spring容器支持多种形式的Bean装配方式&#xff0c;如基于XML的装配、基于Annotatio…

电力系统中针对状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

免费部署属于自己的chatGPT网站,欢迎大家试玩

最近我发现了一个非常nice的部署网站的工具&#xff0c; railway&#xff0c;这个网站是国外的&#xff0c;所以部署出来的项目域名是国外的&#xff0c;并不需要担心封号&#xff0c;也不需要进行域名注册&#xff0c;部署成功之后会自动生成域名&#xff0c;在国内就能够正常…

[NSSRound#11] 密码学个人赛

这个比赛没有参加,跟别人要了些数据跑一下,其实交互这东西基本上一样,跑通就行. ez_enc 这题有点骗人,给了一堆AB串,一开始以为是培根密码,结果出来很乱.再看长度:192 应该就是01替换 a ABAABBBAABABAABBABABAABBABAAAABBABABABAAABAAABBAABBBBABBABBABBABABABAABBAABBABAA…

“心机boy”马斯克:明面上呼吁暂停先进AI研发,背地里悄悄买1万块GPU推进大模型项目

来源: AI前线 微信号&#xff1a;ai-front 整理 | 冬梅、核子可乐 为了研发自家 AIGC&#xff0c; 马斯克狂买 GPU 并四处挖人 当地时间 4 月 11 日&#xff0c;据多家外媒报道&#xff0c;尽管高调建议在整个行业范围内停止 AI 训练&#xff0c;但伊隆马斯克本人倒是在 T…

VMware:安装centos7

环境&#xff1a; 准备好VMware软件 准备好centos镜像 如有需要 寻找镜像&&真机安装&&真机安装时候找不到硬盘 可以查看 &#xff1a; linux&#xff1a;真机安装centos linux&#xff08;突发事件&#xff1a;解决卡在安装界面&#xff09;{寻找镜像--u…

springboot+vue简历系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的简历系统简历系统。项目源码请联系风歌&#xff0c;文末附上联系信息 。 目前有各类成品java毕设&#xff0c;需要请看文末联系方式 …

Excel中的表格批量生成word表格

场景&#xff1a;测试用例excel转word 我们在项目中&#xff0c;默认情况下是用我们的excel用例模版输出测试用例。但是有的项目中&#xff0c;会要求在word版本的测试计划或者测试报告中&#xff0c;写明测试用例。而我们的测试用例&#xff0c;有的项目有上千条&#xff0c;…

基于遥感的自然生态环境检测——实验一:SPOT全色影像正射纠正

实验流程 实验总流程如下图所示&#xff0c;主要包括四大步&#xff1a; &#xff08;1&#xff09;SPOT全色影像正射纠正&#xff1b; &#xff08;2&#xff09;多光谱与全色影像的配准和融合&#xff1b; &#xff08;3&#xff09;大气校正和生态因子提取&#xff1b; &am…

MathType+MicrosoftWord

MathTypeMicrosoftWordMathType的安装Microsoft WordMathType的安装 链接&#xff1a;https://pan.baidu.com/s/1bEd41GF-yRCRw2tb1XH8og?pwd1234 提取码&#xff1a;1234 语言选择英文&#xff01;&#xff01;&#xff01; 安装好之后&#xff0c;按win键&#xff0c;可以…

Springboot项目实战:一个依赖解决多平台OSS文件上传问题,以后就用这个 oss-spring-boot-starter

本文解决痛点。是否再不同项目需要不同的OSS二头疼。 A项目用七牛云&#xff0c;B项目使用阿里云。不想用七牛云了&#xff0c;还是改用华为云吧。同个项目使用不同的 bucketName 遇到这种种情况&#xff0c;本文提供一个依赖搞定多云OSS 适配问题 什么是OSS? 数据以对象&…

【UE 控件蓝图】菜单及功能实现

素材资源连接&#xff1a;百度网盘 请输入提取码 密码&#xff1a;fvcw 效果 步骤 1. 创建蓝图&#xff0c;父类为“HUD” 命名为“MainMenuHUD”并打开 在事件图表中添加如下节点&#xff1a; 2. 创建控件蓝图&#xff0c;命名为“MainMenuWidget” 此时在“MainMenuHUD”的…

全方位解析 pinia

前言 Vue3已经推出很长时间了&#xff0c;它周边的生态也是越来越完善了。之前我们使用Vue2的时候&#xff0c;Vuex可以说是必备的&#xff0c;它作为一个状态管理工具&#xff0c;给我们带来了极大的方便。Vue3推出后&#xff0c;虽然相对于Vue2很多东西都变了&#xff0c;但…

私有句柄表

私有句柄表 实验环境 win7 x86 什么是私有句柄表&#xff1f; 私有句柄表是操作系统内部的一种数据结构&#xff0c;用于存储一个进程所拥有的句柄&#xff08;或称为句柄对象&#xff09;的信息。在操作系统中&#xff0c;句柄是一个标识符&#xff0c;用于唯一标识一个对…

【iOS】NSError**和__autoreleasing场景

前言 在看JSONModel源码的时候&#xff0c;JSONModel的自定义Error的方法一直在报错 - (BOOL)validate:(NSError *__autoreleasing *)error {}这个方法在定义error的时候添加上了__autoreleasing修饰符&#xff0c;涉及到了__autoleasing的显式隐式调用就去了解了一下。 发现…

【C++ 三】一维数组、二维数组

数组概述、一维数组、二维数组 文章目录数组概述、一维数组、二维数组前言1 数组1.1 概述2 一维数组2.1 一维数组定义方式2.2 一维数组数组名2.3 冒泡排序3 二维数组3.1 二维数组定义方式3.2 二维数组数组名总结前言 本文包含数组概述、一维数组、二维数组。 1 数组 1.1 概述…

python web 医院加密处方系统

医院加密处方系统 环境要求&#xff1a; 1、python3.8 2、vue 3、django 4、mysql 5、ruoyi快速开发框架 登录界面 可以登录和注册&#xff0c;注册分三个角色&#xff0c;主治医师和药品医师还有配制医师&#xff0c;有验证码和用户权限功能&#xff0c;用户管理、部…