1.1 C++简介

  C++融合3种不同的编程方式:C语言代表的过程性语言、C++在C语言基础上添加的类代表的面向对象语言、C++模板支持的广泛编程。

1.2 C++简史

1.2.1 C语言

  Ritchie希望有一种语言能将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在旧语言的基础上开发了C语言。

  C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的面向过程的计算机编程语言。

1.2.2 C语言编程原理

  一般来说,计算机语言处理两个概念——数据和算法。数据是程序使用和处理信息,而算法是程序使用的方法。从概念上说,过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作。程序命令计算机按一系列流程生成特定的结果,就像菜谱制定了厨师做蛋糕时应遵循一系列步骤一样。

  随着程序规模的扩大,早期的程序语言(FORTRAN和BASIC)都会遇到组织方面的困难。例如,程序经常使用分支,根据某种测试结果,执行一组或另一组指令。很多旧式程序的执行路径很混乱,几乎不能通过阅读程序来解释它,修改这种程序更是一种灾难。为了解决这种问题,一种更有秩序的编程方法——结构化编程。另一种新原则是自顶向下的设计。

1.2.3 面向对象编程

  虽然结构化编程的理念提高了程序的清晰度、可靠性,并使之便于维护,但它在编写大型程序是,仍面临着挑战。为了应付这一种挑战,OOP提供了一种新方法。与强调算法的过程性编程不同的是,OOP强调的是数据。

  在C++中,是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。

  OOP编程并不仅仅是将数据和方法并为类定义,还有助于创建可用代码,这将减少工作量。

  信息隐藏可以保护数据,使其免遭不适当的访问。多态能让您为操作符和函数创建多个定义,通过编程上下文来确定使用哪种定义。继承让您能够使用旧类派生出的新类。

  设计有用、可靠的类是一项艰巨的任务,幸运的是,OOP语言使程序员在编程钟能够轻松使用已有的类。厂商提供了大量的有用的类库,包括设计用于简化Windows或Macintosh环境下变成的类库。C++正真的优点之一是:可以方便的重用和求该现有的经过仔细测试的代码。

1.2.4 C++和通用编程

  通用编程是C++支持的另一种编程模式。

  OOP强调的是编程的数据方面,通用编程强调的是算法方面。

  OOP是一个管理大型工程的工具,通用编程提供了执行常见任务的工具。

1.2.5 C++的起源

  C++和C一样,都是在贝尔实验室诞生的。它的主要功能是方便编写出好程序,让每个程序员更加快乐

1.3 可移植性和标准

  在不修改代码的情况下,重新编译后,在不同的平台上程序将运行良好——可移植性。

  可移植性障碍:硬件、语言差异

  标准是不断发展的。

1.4 程序创建的技巧

  1.使用文本编辑器编写代码,并将其保存到文件汇总,这个文件就是程序的源代码。

  2.编译源代码。翻译为主机使用的内部语言,机器语言。

  3.将目标代码与其他代码链接起来。

1.4.1 创建源代码文件

  有些C++实现其功了集成开发环境,让您能够在主程序钟管理程序开发的所有步骤,包括编辑。

  有些实现只能处理编译和链接阶段,要求在系统命令行上输入命令。

  C++源程序后缀必须使用正确(文件名.cpp)

  使用什么扩展名去决定于C++的实现。

C++实现

源代码的扩展名

C++的实现

源代码的扩展名

UNIX

C、cc、cxx、c

Watcom

cpp

GUN C++

C、cc、cxx、cpp、c++

Microsoft Visual C++

Cpp、cxx、cc

Digital Mars

cpp、cxx

Metrowerks CodeWarrior

cp、cpp、cc、cxx、c++

Borland C++

Cpp

1.4.2 编译和链接

  最初,Stroustrup 实现C++时,使用了一个C++到C的编译器程序,而不是开发直接的C++到目标代码编译器,随着C++的日渐普及,越来越多实现转向创建C++编译器,直接将C++源代码生成目标代码。

  ①UNIX编译和链接

  ②Linux编译和链接

  ③Windows命令行编译器

  ④Windows编译器

  ⑤Macintosh上的C++

1.5 总结

  C语言新增了诸如控制结构和函数等特性,一遍更好地控制程序流程,支持结构化和模块化程度更高的方法。

  C++增加了对面向对象编程和泛型编程的支持,这有助于提高模块化和创建可重用代码,从而节省编程时间并提高了程序的可靠性。

C++学习笔记-预备知识的更多相关文章

  1. C学习笔记-预备知识

    计算机结构组成 CPU(中央处理器)(控制器+运算器) 存储器(内存+外存) 输出设备 输入设备 计算机系统组成 硬件系统 主机 中央处理器 运算器 控制器 内存储器 只读存储器 随机存储器 外部设备 ...

  2. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  3. SQL 数据库 学习 004 预备知识

    数据库 预备知识 我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识. 预备 ...

  4. Python 2.7 学习笔记 基本知识

    python是一种解释型的.面向对象的.带有动态语义的高级程序设计语言.本文介绍下python的基本知识. 一.安装 各种操作系统有自己的安装方法,linux系统一般都自带了python的环境.这里不 ...

  5. Unity3D学习笔记——初级知识

    一:Unity欢迎窗口对于初学者来说有很多有价值的信息,值得用户关注,以下将简要介绍这个窗口中的相关内容: 1.Video Tutorials: 提供unity相关的教程 ,包括用户手册 .组件手册以 ...

  6. three.js学习笔记--基础知识

    基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...

  7. JavaScript学习笔记——基本知识

    JavaScript学习的教程来自后盾网 1>JavaScript的放置和注释 1.输出工具 A.alert(); B.document.write(); C.prompt("&quo ...

  8. SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

    Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   ...

  9. java虚拟机JVM学习笔记-基础知识

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--java虚拟机 媒介:JVM是每一位从事Java开发工程师必须翻越的一座大山! JVM(Java Virtual Machine)JRE ...

随机推荐

  1. python 整型、字符串常用方法、for循环

    整型--int 定义:用于比较和计算 python2和python3: python2:python2中油int(整型)和long(长整型):1231312L+ 进制转换: 十进制转二进制:正除2,获 ...

  2. 013 turtle程序语法元素分析

    目录 一.概述 二.库引用与import 2.1 库引用 2.2 使用from和import保留字共同完成库引用 2.3 两种库引用方法比较 2.4 使用import和as保留字共同完成库引用 三.t ...

  3. Spring Cloud官方文档中文版-Spring Cloud Config(上)-服务端(配置中心)

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...

  4. Swift从入门到精通第十一篇 - 初始化 初识

    初始化(学习笔记) 环境Xcode 11.0 beta4 swift 5.1 初始化 初始化是类.结构体.枚举生成实例的过程,为该类的每个存储属性设置初始值,有些在实例使用前的设置或初始化也可在此实现 ...

  5. 提供就医帮助的安卓APP

    首先 这是我们团队第一次开发安卓APP,也是我 个人第一个开发项目APP,俗话说:“万事开头难”.所以对于新手的我们来说,做好开发前的准备至关重要.凡事预则立不预则废! 首先我们团队这次开发的提供就医 ...

  6. linux常见报错

    零.目录 一. 文件和目录类 File exist 文件已经存在 No such file or directory 没有这个文件或目录(这个东西不存在) command not found 命令找不 ...

  7. 【全网首创】修改 Ext.ux.UploadDialog.Dialog 源码支持多选添加文件,批量上传文件

    公司老框架的一个页面需要用到文件上传,本以为修改一个配置参数即可解决,百度一番发现都在说这个第三方插件不支持文件多选功能,还有各种各样缺点,暂且不讨论这些吧.先完成领导安排下来的任务. 任务一:支持多 ...

  8. [Algorithm] Hashing for search

    Hashing Process 关于hash本身,解决冲突是一个小重点,如下图. 代码实现分析 —— 定义HashTable类 一.数据结构 def __init__(self): self.size ...

  9. [Scala]集合中List元素转Tuple元素的函数迭代写法

    ____ 本文链接: https://www.cnblogs.com/senwren/p/Scala-Lis-2-Tuple.html —— Scala没有提供相应写法, 但迭代写法仍然可以做到. 有 ...

  10. 判断dom原始是否在可视区域内

    isElementInViewport (el, offset = 0) { const box = el.getBoundingClientRect(), top = (box.top >= ...