草庐IT

第1章 预备知识

木三百川 2023-03-28 原文

说明

看《C++ Primer Plus》时整理的学习笔记,部分内容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,张海龙 袁国忠译,人民邮电出版社。只做学习记录用途。

1.1 c++简介

c++ 融合了3种不同的编程方式:

  • C 语言代表的过程性语言;
  • C++ 在 C 语言基础上添加的类代表的面向对象语言;
  • C++ 模板支持的泛型编程。

1.2 c++简史

20世纪70年代早期,贝尔实验室的 Dennis Ritchie 在旧语言的基础上开发了 C 语言,将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在了一起。C 语言具有结构化编程方法的特性(如for循环、while循环、do while循环、if else语句等)、遵循自顶向下的设计原则(将大型程序分解为多个小型程序,任务模块化)。

20世纪80年代,同在贝尔实验室的 Bjarne Stroustrup 在 C 语言的基础上开发出了 C++ 语言。C++ 融合了 OOP(Object Oriented Programming)、泛型编程传统的过程性方法;实际应用时不一定遵循自顶向下的设计原则,更多的是使用自下向上,从低级组织(如类)到高级组织(如程序)的编程方法。OOP 强调的是编程的数据方面,泛型编程强调的是独立于特定数据类型,这些都有助于模块化和创建可重用代码。

1.3 可移植性和标准

程序可移植性存在两个方面的障碍:一是硬件、二是语言上的差异(编程语言也存在方言)。第一个障碍很多情况下是无法避免的,因此与特定硬件相关的程序一般是不可移植的;针对第二个障碍,可以通过制定一个通用的标准来进行制约。

美国国家标准局(American National Standards Institude, ANSI)在1990年设立了一个委员会(ANSI X3J16),专门负责制定C++标准。国际标准化组织(ISO)很快也加入了这个行列,创建了ANSI/ISO,致力于制定C++标准。

1998年,C++ 标准委员会发布了第一个国际标准 ISO/IEC 14882:1998,该标准常被称为 C++98。其后几年,委员会针对第一版中的诸多问题进行修订、减少多义性后,于2003年发布了 C++ 标准第二版 ISO/IEC 14882:2003,常被称为 C++03。由于 C++03没有改变语言特性,因此一般使用 C++98 表示 C++98/C++03。2011年,新的 C++ 标准 C++11 面世(ISO/IEC 14882:2011),新增了众多特性,例如正则表达式、标准线程库、auto关键字、更好的 union 支持等。

1.4 程序创建的技巧

编写以及执行 C++ 程序的大体流程如下:

  1. 使用文本编辑器编写程序(源代码);
  2. 使用编译器翻译源代码,将源代码翻译为机器语言,生成目标代码文件;
  3. 将目标代码与其他代码链接起来,例如所用库函数的目标代码以及一些标准的启动代码,生成可执行代码

有些C++实现提供了集成开发环境(Integrated Development Environments, IDE),例如 Microsoft Visual C++,使得开发人员能够在主程序中管理程序开发的所有步骤;IDE提供了用于创建源代码文件的文本编辑器、用于生成可执行文件的编译器链接器以及其他资源,如项目管理和调试功能,这些任务也可以在命令行环境中通过调用合适的工具来完成。常见实现的源代码文件的扩展名如下表:

C++实现 源代码文件的扩展名
UNIX C、cc、cxx、c
GNU C++ C、cc、cxx、cpp、c++
Microsoft Visual C++ cc、cxx、cpp

有关第1章 预备知识的更多相关文章

  1. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  2. NEUQ-acm 预备队训练Week4—BFS/DFS - 2

    1.深度优先搜索(DFS)深度优先遍历主要思路是从图中一个未访问的顶点V开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底…,不断递归重复此过程,直到所有的顶点都遍历完成。例题P1605迷宫题目描述给定一个N×MN\timesMN×M方格的迷宫,迷宫里有TTT处障碍,障碍处不可通过。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。输入格式第一行为三个正整数N,M,TN,M,TN,M,T,分别表示迷宫的长宽和障碍总数。第二行为四个正整数SX,S

  3. ruby - Ruby基础知识 - 2

    Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。已关闭8年。什么是学习ruby语言

  4. ruby - 我应该具备哪些 Ruby 知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我刚刚发现了whatc#knowledgeshouldIhave?问题和想知道的相同,但对于Ruby。我认为Ruby是我最喜欢的编程语言,除了学习基础知识外,至少我从众多RubyonRails项目和一些Ruby脚本中学到的东西,我还尝试通过阅读像Gluttonous这样的博客来学习。,O'ReillyRuby,OlaBini,和PolishingRuby.

  5. Unity基础知识之顶点吸附、创建组合体 - 2

    Unity基础知识之顶点吸附、创建组合体一、顶点吸附顶点吸附:选择物体后按住键盘上的V键,鼠标定点定位,再拖拽到目标物体对齐即可。注:操作成功后先松V键。1、两个平面Plane的顶点吸附2、两个物体cube的顶点吸附二、创建组合体(子弹)组合体子弹由2个capsule(胶囊)、1个cylinder(圆柱体)组成,如图先创建这3个对象。再将其中一个capsule按照一定比例缩小,将三个对象按照一定位置放置好。创建一个GameObject,将三个对象放在该GameObject里,这样就是父子结构。为创建的组合体即子弹可以添加材质Material:在assets目录下新建Material,选择颜色后

  6. 【操作系统】十分钟了解关于TCP/IP网络的基础知识(二)ARP、路由器、DHCP、DNS以及TCP/IP - 2

    承接上篇文章(十分钟了解关于TCP/IP网络的基础知识)五.ARP(地址解析协议)        虽说使用IP地址确实方便了我们使用者记忆以及整理归类、寻找信息的发送目的地,但是最终接收数据的地方,还是MAC地址,于是乎,为了实现有IP地址到MAC地址的转换,引入了名为ARP(AddressResolutionProtocol)又称之为地址解析协议。      ARP通过广播(Broadcast,这是个专业名词,后面还会继续提起)的方式对LAN中所有的计算机提问:“哎,谁IP地址是10.165.7.116(上篇文章中的例子)呀?你MAC地址多少啊,快过来登记一下!”,如果有哪台计算机回复了MA

  7. javascript - 我应该如何开始学习 JavaScript、jQuery 等?我的编程知识为零 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我是设计出身。我的编程知识是零。在学习了XHTML和CSS之后,我想学习并掌握JavaScript、jQuery等。我应该如何开始?这将是我第一次尝试编程。我可以使用和编辑现成可用的jQuery/JavaScript脚本,但我不能自己制

  8. 《统计学》第八版贾俊平第六章统计量及抽样分布知识点总结及课后习题答案 - 2

    一、知识框架二、练习题调节一个装瓶机使其对每个瓶子的灌装量均值为μ盎司,通过观察这台装瓶机对每个瓶子的灌装量服从标准差σ=1.0盎司的正态分布。随机抽取这台机器灌装的9个瓶子组成一个样本,并测定每个瓶子的灌装量。试确定样本均值偏离总体均值不超过0.3盎司的概率。解:设每个瓶子的灌装量为X,X为样本均值,样本容量为n。由于总体X服从正态分布,样本均值X也服从正态分布,且均值相同,标准差为所以三、简述题1什么是统计量?为什么要引进统计量?统计量中为什么不含任何未知参数?答:(1)统计量的定义:设X1,X2,…,Xn是从总体X中抽取的容量为n的一个样本,如果由此样本构造一个函数T(X1,X2,…,X

  9. Unity游戏开发前置知识 - 2

    本文适合有一定C#基础的初学者。设计模式含义:帮助我们降低对象之间的耦合度常用的方法称为设计模式。使用设计模式是为了可重用代码,让代码更容易被其他人所理解,保证代码可靠性,使代码编制真正工程化,这是软件工程的基石。分类:创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、组合模式、原型模式。结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。单例模式含义:一个类只有一个实例,只在内部实例一次,外部无法实例化,全局

  10. 高等数学重积分知识点笔记小结 - 2

    一:二重积分1:二重积分的概念与性质:(1)首先知道什么叫曲顶柱体。(这里不多讲,不会百度)。(2)定义:设f(x,y)是有界闭区域D上的有界函数,将闭区域D任意分成n个小闭区域oi,在每个小区域上取一点f(ai,bi),做乘积f(ai,bi)oi,并作和。如果当各个闭区域的直径中的最大值max趋近于0时,这和的极限总存在,且与闭区域D的分法及点f(ai,bi)无关,那么称此极限为函数f(x,y)在闭区域D上的二重积分。 (3)二重积分的六条重要性质:性质一:设a和b为常数,则*******性质二:如果闭区间D被有限条曲线分为有限个部分闭区间,那么在D上的二重积分等于在各部分闭区间上的二重积分

随机推荐