@1405010312
2017-07-12T14:18:18.000000Z
字数 3324
阅读 798
C++PrimerPlus(第6版)中文版
c++融合了3种不通的编程方式:c语言代表的过程性语言,c++在c语言基础上添加的类代表的面向对象语言,c++模板支持的泛型编程.
20世纪70年代,c和Pascal这样的语言引领人们进入了结构化变成是滴啊,这种机制把秩序和规程带劲了迫切需要这种性质的领域中.除了提供结构化编程工具外,c还能生成简洁,快速运行的程序,并提供了处理硬件问题的能力.20世纪80年代,人们也见证了一种新编程模式的成长:面向对象编程(OOP).
20世纪70年代早期,贝尔实验室的Dennis Ritchie致力于开发UNIX操作系统.为完成这项工作,Ritchie需要一种语言,它必须简洁m能够生成简洁,快速的程序,并能有效地控制硬件.于是c语言因此诞生.
一般来说,计算机语言要处理两个概念-数据和算法.数据是程序使用和处理的信息,而算法是程序使用的方法.c语言在最初面世时也是过程性语言,这意味着它强调的是编程的算法方面.从概念上说,过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作.程序名利计算机按一系列流程生成特定的结果.
随着程序规模的扩大,早期的程序语言都会遇到组织方面的问题.例如,程序经常使用分支语句,根据某种测试的结果,执行一组或另一组指令.很多旧式程序的执行路径很混乱,几乎不可能通过程序来理解它.为了解决这种问题,计算机科学家开发了一种更有序的编程方法-结构化编程.c语言具有使用这种方法的特性.
另一种新原则是自顶向下的设计.
虽然结构化编程的理念提高了程序的清晰度,可靠性,并使之便于维护,但它在编写大型程序时,仍然面临挑战.OOP提供了一种新的方法,与强调算法过程性编程不同的是,OOP强调的是数据.OOP不想过程性编程那样,试图使问题满足语言的过程性方法,而是试图让语言来瞒住问题的要求.其理念是设计与问题的本质特性相对应的数据格式.
在c++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构.通常类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作.
OOP程序设计方法首先设计类,他们准确地表示了程序要处理的东西.然后可以设计一个使用这些类的对象的程序.从低级组织到高级组织的处理过程叫做自下向上的编程.
OOP编程并不仅仅是将数据和方法合并为类定义.
设计有用,可靠的类是一项艰巨的任务,幸运的是,OOP语言使程序员在编程中能够轻松地使用已有的类.厂商提供了大量有用的类库,包括设计用于简化Windows或Macintosh环境下编程的类库.
泛型编程是c++支持的另一种编程模式,它与OOP的目标相同,即使重用代码和抽象通用概念的技术更简单.不过OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型.
与c语言一样,c++也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代在这里开发除了这种语言.
在可移植性方面存在连个障碍,其中一个是硬件.硬件特定的程序是不可移植的.第二个障碍是语言上的差异.
c++国际标准ISO/IEC 14882:1998,该标准常被称为c++98,它不仅描述了已有的c++特性,还对该语言进行了扩展,添加了异常,运行阶段类型识别,模板和标准模板库(STL).2003年,发布了c++标准第二版(ISO/IEC 14882:2003).2001年8月批准了新标准ISO/IEC 14882:2011,该标准以前称为c++11.
Stroustrup编写的 The Programming Language 是最初的c++事实标准.
下一个事实是Ellis和Stroustrup编写的The Annotated C++ Reference Manual
c++98标准新增了大量特性,其篇幅将近800页,且包含的说明很少.
c++11标准的篇幅长达1350页,对旧标准做了大量的补充.
C++实现 | 源代码文件的扩展名 |
---|---|
UNIX | C,cc,cxx,c |
GNU C++ | C,cc,cxx,cpp,c++ |
Digital Mars | cpp, cxx |
Borland C++ | cpp |
Watcom | cpp |
Microsoft Visual C++ | cpp, cxx, cc |
Freestyle CodeWarrior | cp, cpp, cc, cxx, c++ |
Stroustrup实现c++时,使用了一个c++到c的编译器程序,而不是开发直接的c++到目标代码的编译器.
UNIX编译和链接
CC spiffy.c
生成.O文件.接下来,编译器自动将目标代码文件传递给系统链接程序,该程序将代码与库代码结合起来,生成一个可执行文件.只要输入执行文件名即可.a.out
.CC my.C precious.C
CC my.C precious.o
CC usingmath.C -lm
Linux编译和链接
g++ spiffy.cxx
g++ spiffy.cxx -lg++
g++ my.cxx precious.cxx
Windows命令行编译器
g++ great.cpp
Windows编译器