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 ...
随机推荐
- Node基础-CommonJS模块化规范
1.在本地项目中基于NPM/YARN安装第三方模块 第一步:在本地项目中创建一个"package.json"的文件 作用:把当前项目所有依赖的第三方模块信息(包含:模块名称以及版本 ...
- 【Offer】[47] 【礼物的最大价值】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 在一个m*n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0).你可以从棋盘的左上角开始拿格子里的礼物,并每次向左(以自 ...
- zabbix -- 学习之一
网上说这东西是运维必须学会的东西,于是乎捣鼓的第一步就开始了. 首先,在度娘上搜索了一下,找到了官网,按照官网的说法没操作成功.后来照这博主的帖子(https://www.cnblogs.com/xi ...
- springcloud(六):Spring Cloud 配置中心采用数据库存储配置内容
Spring Cloud 配置中心采用数据库存储配置内容 转自:Spring Cloud Config采用数据库存储配置内容[Edgware+] Spring Cloud Server配置中心采用了G ...
- 个人IP「Android大强哥」上线啦!
自从入职新公司之后就一直忙得不行,一边熟悉开发的流程,一边熟悉各种网站工具的使用,一边又在熟悉业务代码,好长时间都没有更文了. 不过新公司的 mentor(导师)还是很不错的,教给我很多东西,让我也能 ...
- Java面试-如何获取客户端真实IP
在进行一些小游戏开发时,我们经常比较关注的一个功能便是分享.针对分享,我们希望能根据各个城市或者地区,能有不同的分享文案,辨识地区的功能如果由服务器来完成的话,我们就需要知道客户端的真实IP.今天我们 ...
- Linux 笔记 - 第十五章 MySQL 常用操作和 phpMyAdmin
博客地址:http://www.moonxy.com 一.前言 前面几章介绍了 MySQL 的安装和简单的配置,只会这些还不够,作为 Linux 系统管理员,我们还需要掌握一些基本的操作,以满足日常管 ...
- Azure Application Insights REST API使用教程
本文是Azure Application Insights REST API的简单介绍,并会包含一个通过Python消费API的示例/小工具. 新加入的team中的一项工作是制作日常的运维报表,制作方 ...
- MOOC C++笔记(五):继承
第五周:继承 继承和派生的基本概念 继承:在定义一个新的类B时,如果该类与某个个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为基类的一个派生类(也称子类). 派生类 ...
- Django中自定义模型管理器(Manager)及方法
1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager.每个Django模型至少有一个ma ...