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 ...
随机推荐
- Maven依赖配置和依赖范围
Maven依赖配置 一个dependency的声明可以包含以下元素: <dependencies> <dependency> <groupId>org.apache ...
- Docker下kafka学习三部曲之一:极速体验kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,从本章开始我们先极速体验,再实战docker下搭建kafka环境,最后开发一个java web应用来体验kafka服务. 我们一起用最快的速度体验ka ...
- jinja2批量生成python脚本
在使用airflow的过程中需要大量的dag脚本进行性能测试,如果一个个去编写dag脚本未免太过麻烦,于是想到用python的jinja2模板引擎实现批量脚本生成. 先通过pip命令安装jinja ...
- 大数据平台搭建 - cdh5.11.1 - oozie安装
一.简介 oozie是hadoop平台开源的工作流调度引擎,用来管理hadoop作业,属于web应用程序,由oozie server 和oozie client构成. oozie server运行与t ...
- maven的使用解说
maven周期及项目中的应用: 周期如下: 1.default生命周期,部署项目(jar包的依赖管理) 2.clear生命周期,项目清理工作 3.site生命周期,处理项目中产生的文档信息 应用: 1 ...
- Spring Boot 面试题总结
1.什么是spring boot 答案:springboot是用来简化spring应用的初始搭建和开发过程,使用特定的配置文件来配置,例如application.properties,简化来maven ...
- 增删改查——DBUtils
利用QueryRunner类实现对数据库的增删改查操作,需要先导入jar包:commons-dbutils-1.6.利用QueryRunner类可以实现对数据步骤的简化. 1.添加 运用JDBC工具类 ...
- 字节输入流InputStream
import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class FileIn ...
- Elastic Stack 笔记(七)Elasticsearch5.6 聚合分析
博客地址:http://www.moonxy.com 一.前言 Elasticsearch 是一个分布式的全文搜索引擎,索引和搜索是 Elasticsarch 的基本功能.同时,Elasticsear ...
- charles 黑名单
本文参考:charles 黑名单 charles 黑名单 功能:阻止对匹配HOST的请求:可以直接把请求丢掉,也可以直接返回403状态码: 我一般用黑名单工具来block一些软件的自动上传功能 黑名单 ...