本文共 2685 字,大约阅读时间需要 8 分钟。
C++融合了3种不同的编程方式:
20世纪70年代早期,贝尔实验室的Dennis Ritchie致力于开发UNIX操作系统。为了完成这项工作,Ritchie需要一种语言,它必须简洁,能够生成简洁、快速的程序,并能有效地控制硬件。传统上,程序员使用汇编语言来满足这些需求,汇编语言依赖于计算机的内部机器语言,它属于低级语言(low-level),即直接操作硬件。一旦更换硬件,就需要不同的汇编语言重新编写程序。于是,Ritchie在旧语言的基础上开发了C语言。
C语言是一种结构性语言,它包含了for循环、while循环和if else等语句,它的原则是自顶向下(top-down),它鼓励程序员开发程序单元(函数)来表示各个任务模块。
虽然结构化编程的理念提高了程序的清晰度、可靠性,并使之便于维护,但它在编写大型程序时,仍面临着挑战,于是OOP应运而生。过程性编程强调算法,OOP强调的是数据。
OOP程序设计方法首先设计类。在C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的数据结构。
泛型编程(Generic Programming)是C++支持的另一种编程模式。它与OOP的目标相同,即使得重用代码和抽象通用概念的技术更简单。不过OOP强调的是编程的数据,而泛型编程强调的是独立于特定数据类型。泛型编程需要对语言进行扩展,以便可以只编写一个泛型函数(而不是特定类型的函数),并将其用于各种实际类型。C++模板提供了完成这种任务的机制。
与C语言一样,C++也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代在这里开发了这种语言。他是权威参考手册《The C++ Programming Language》和《The design and Evolution of C++》的作者。
四个处理过程说明:
C++实现 | 源代码扩展名 |
---|---|
UNIX | C、cc、cxx、c |
GNU C++ | C、cc、cxx、cpp、c++ |
Microsoft Visual C++ | cpp、cxx、cc |
UNIX使用CC来编译程序,但是1993年之后就没有再更新。当今的UNIX计算机可能没有编译器、有专用的编译器或第三方编译器,例如GNU g++。它的编译命令为:
CC my.C precious.C
它编译完之后会生成.o文件,随后将由编译器自动将目标文件传递给系统链接程序,生成可执行文件a.out。
如果我们只修改了my.C文件,我们还可以使用下列命令:
CC my.C precious.o
Linux系统中最常用的编译器是g++,它来自于Free Software Foundation的GNU C++编译器。Linux的多数版本都包括该编译器,但并不一定会安装它。g++编译器的工作方式和标准UNIX编译器很像。例如。
g++ my.cxx precious.cxx
这将生成一个名为a.out的可执行文件和两个目标代码文件my.o和precious.o。如果接下来修改了其中的my.cxx。则可以使用下列命令进行编译。
g++ my.cxx precious.o
Cygwin和MinGW都包含编译器GNU C++,且可免费下载,他们使用的编译器名为g++。要使用g++编译器,首先需要打开一个命令提示窗口。启动程序Cygwin和MinGW时,他们将自动为您打开一个命令提示符窗口。它的编译命令如下:
g++ great.cpp
如果编译成功,则得到可执行文件名为a.exe
//单行注释,C++风格注释/*多行注释C风格注释*/
以下列头文件举例,头文件的作用是将iostream文件的内容取代程序中的代码行#include<iostream>。
#include
头文件命名约定:
头文件类型 | 约定 | 实例 | 说明 |
---|---|---|---|
C++旧式风格 | 以.h结尾 | iostream.h | C++程序可以使用 |
C旧式风格 | 以.h结尾 | math.h | C、C++程序可以使用 |
C++新式风格 | 没有扩展名 | iostream | C++程序可以使用,使用namsspace std |
转换后的C | 加上前缀C,没有扩展名 | cmath | C++程序可以使用,可以使用不是C的特性,如namespace std |
注意如果使用iostream,而不是iostream.h,则应使用下面的名称空间编译指令来使iostream中的定义对程序可用:
using namespace std
头文件还可以使用一些特殊的扩展名(如.hpp或.hxx)
文章参考:《C++ Primer Plus第六版》
转载地址:http://uzbiz.baihongyu.com/