C++学习笔记-预备知识
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++学习笔记-预备知识的更多相关文章
- C学习笔记-预备知识
计算机结构组成 CPU(中央处理器)(控制器+运算器) 存储器(内存+外存) 输出设备 输入设备 计算机系统组成 硬件系统 主机 中央处理器 运算器 控制器 内存储器 只读存储器 随机存储器 外部设备 ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- SQL 数据库 学习 004 预备知识
数据库 预备知识 我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识. 预备 ...
- Python 2.7 学习笔记 基本知识
python是一种解释型的.面向对象的.带有动态语义的高级程序设计语言.本文介绍下python的基本知识. 一.安装 各种操作系统有自己的安装方法,linux系统一般都自带了python的环境.这里不 ...
- Unity3D学习笔记——初级知识
一:Unity欢迎窗口对于初学者来说有很多有价值的信息,值得用户关注,以下将简要介绍这个窗口中的相关内容: 1.Video Tutorials: 提供unity相关的教程 ,包括用户手册 .组件手册以 ...
- three.js学习笔记--基础知识
基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...
- JavaScript学习笔记——基本知识
JavaScript学习的教程来自后盾网 1>JavaScript的放置和注释 1.输出工具 A.alert(); B.document.write(); C.prompt("&quo ...
- SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数
Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下: ...
- java虚拟机JVM学习笔记-基础知识
最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--java虚拟机 媒介:JVM是每一位从事Java开发工程师必须翻越的一座大山! JVM(Java Virtual Machine)JRE ...
随机推荐
- 2018 Multi-University Training Contest 1(部分题解)
Maximum Multiple Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【Offer】[53-2] 【0~n-1中缺失的数字】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内.在范围0~n-1内的n个数字中有且只有一个数字 ...
- 【LeetCode】46-全排列
题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [ ...
- maven打包插件maven-assembly-plugin
1.POM文件添加jar包生成插件 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifac ...
- Java 中初始化 List 集合的 7 种方式
1.常规方式 List<String> languages = new ArrayList<>(); languages.add("Java"); lang ...
- 初步认识JWT
前言: 现在越来越多的项目或多或少会用到JWT,为什么会出现使用JWT这样的场景的呢? 假设现在有一个APP,后台是分布式系统.APP的首页模块部署在上海机房的服务器上,子页面模块部署在深圳机房的服务 ...
- Redis在新项目中的使用场景
Redis在新项目中的使用场景 数据类型 使用场景 string 比如说,我想知道什么时候封锁一个Ip地址,Incrby命令(使用这个命令记录被访问的次数) Hash 存储用户的信息[id,name, ...
- Oracle SQL调优之绑定变量用法简介
目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...
- Java中对象创建时的内存分配
一.前言知识铺垫 1.逃逸对象:在一个方法内创建的对象没有被外界引用则称该对象为未逃逸的对象. 2.JDK1.6以后的HotSpot虚拟机支持运行时的对象逃逸分析. 3.JVM中的参数配置: 1) ...
- MIT FiveK图像转化--DNG到TIFF,TIFF到JPEG
MIT FiveK图像转化--DNG到TIFF,TIFF到JPEG MIT FiveK数据库是研究图像自动修饰算法会用到的基准数据库,然而那个网页上提供给我们的5000张原始图像的格式为DNG格式(一 ...