C++ Primer Plus 阅读笔记(一)

C++简介

1.C++的三种编程方式:

  • C语言代表的过程性语言(即面向过程性编程)
  • 以类为代表的面向对象语言
  • 以模板为支持的泛式编程

2.C语言的诞生

20世纪70年代,贝尔实验室为了开发UNIX操作系统(管理计算机资源,实现用户与计算机间的交互)需要开发一种简洁、快速且能有效控制硬件的语言。传统的汇编语言需要直接操作硬件(如直接访问CPU寄存器和内存单元),是一种低级语言,由于其针对不同的计算机处理器,因此将代码移植到另一种计算机时需要用不同的汇编语言进行编写(就像是买了新车时,设计人员重新设计了位置和功能,不得不重新学习)。然而,UNIX是为了能工作在不同的计算机上而设计的,意味着它是一种高级语言,通过一种成为编译器的特殊程序将高级语言翻译成高级语言程序便可以用于不同的平台。Ritechie希望能将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合到一起,开发出了C语言。

3.程序 数据 算法

c语言最初时面向过程,强调算法,当程序规模扩大会遇到组织障碍。为了解决这个问题,计算机科学家提出了结构化编程方法,c语言现在也具有使用这种方法特性,分支(决定接下来干什么)结构化(for,while,if else语句)。

自顶向下程序设计思想,大程序分解成小程序。将整理书房,分解为整理书桌,整理地板,整理书架等子任务。

结构化编程,在面对大程序的时候仍遇到困难,开发OOP(Object Oriented Programming,面向对象),其理念是设计与问题的本质特性相对的数据格式,在C++中,类是一种规范,描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。类是框架,对象是实例,如一个类——人(姓名,头衔,工资,特长等),一个对象——(李文,产品经理,2万,产品理念设计等)。

设计一个使用类的对象的程序,从低级组织(如类)向高级组织(如程序)的处理过程叫做自下向上的编程。(有时也不一定自下而上)

OPP的新理念:继承,多态,虚函数,重载,信息保护。(面向对象的重点)

泛型编程:通常写一个排序要针对特定的数据类型不同(如int和float)重写,但泛型编程不考虑数据类型,而是一个泛型。

OPP是管理大型项目的工具,泛型编程提供了执行常见任务的工具(对数据排序,合并链表)

C++二重性: 涵盖了OPP高级抽象,C提供低级硬件访问
可移植性和标准:只需为新平台设计一个新的编译器,实现了代码移植,同一套标准。
面临两个障碍:硬件不同,编程语言差异。

C++标准(略)

4.创建一个C++程序并运行的流程:

  1. 代码流程
    源代码 -> 编译器 -> 目标代码(.o)-> 连接程序(包含启动代码、库代码)->可执行代码(.out)
  2. 编译
    编译器扩展名: .C .cxx .cpp .c++ (一般用.cpp 但是UNIX不支持)
    编译过程:
    1. C++编译成C再编译成可执行文件
    2. C++直接编译成可执行文件
    3. 编译多个文件时(g++ main.cpp walk.cpp),(main.o,walk.o)不会被删除,当改了某一个文件(main.cpp),只需重新编译main.cpp并完成链接(g++ main.cpp walk.o)

5.GCC/G++

gcc and g++分别是GNU的c & c++编译器。 gcc/g++在执行编译的时候一般有下面4步:

  1. 预处理,生成.i的文件[预处理器cpp]。
  2. 将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]。
  3. 由汇编变为目标代码(机器代码)生成.o的文件[汇编器as]。
  4. 连接目标代码,生成可执行程序[链接器ld]。

你可能感兴趣的:(C++Primer,Plus阅读,c++,编程语言)