第章1 C+ + 概 述 C++是一门以C语言为基础发展而来的面向对象的高级程序设计语言。本章将首先介 绍C++语言的发展过程,让读者对C++有一个基本的认识,了解C++的特点和运行机制,接 着详细介绍C++开发环境的配置,讲解如何创建C++程序并运行,并对C++开发过程中一些 基本的注意事项进行了说明。 学习目标: .了解C++与C的关系及C++语言的特点。 .了解C++语言发展历史及应用领域。 .了解C++常用的开发环境种类。 .掌握VisualStudio的安装及配置过程。 .能编写并运行简单的C++程序。 1.1 C+ + 语言发展 1.1 C++与C语言的关系 1. 1.C语言 1967 年剑桥大学的MartinRichards为编写操作系统软件和编译程序开发了BCPL 语言。 1970 年,KenThompson在继承BCPL 语言诸多优点的基础上开发了实用的B语言。1972 年,贝 尔实验室的DennisRitchie在B语言的基础上做了进一步的充实和完善,开发出了C语言。 C语言具有许多优点:语言简洁灵活、运算符和数据类型丰富、具有结构化控制语句、程 序执行效率高,同时具有高级语言和汇编语言的优点等。与其他高级语言相比,C语言可以直 接访问物理地址,与汇编语言相比又具有良好的可读性和可移植性。因此C语言得到了极为 广泛的应用,后来的很多软件都用C语言开发,包括Windows、Linux等。 C语言是面向过程的,只能把代码封装到函数,没有类。所谓面向过程,就是通过不断地调用 函数来实现预期的功能。在C语言中,我们会把重复使用或具有某项功能的代码封装成一个函数, 将具有相似功能的函数放在一个源文件,调用函数时,引入对应的头文件即可,如图1-1所示。 但是随着C语言应用的推广,其存在的缺陷也逐渐暴露出来。例如,C语言对数据类型检 查的机制比较弱,缺少支持代码重用的结构;随着计算机性能的飞速提高,软件工程规模的扩 大,很多软件的大小都超过1GB,如Flash、VisualStudio等,用C语言开发这些软件就显得非 常吃力了。C语言是一种面向过程的编程语言,不能满足运用面向对象的方法开发软件的需 要。为克服C语言本身存在的缺点,同时为支持面向对象的程序设计,1980 年贝尔实验室的 BjarneStroustrup在C语言基础上创建、开发出了一种通用的程序设计语言———C++。 C++ 程序设计 图1-1C语言中项目的组织方式 2.C++语言 C++读作“C加加”,是CPlusPlus的简称。C++是在C语言的基础上开发的一种集面 向对象编程、泛型编程和过程化编程于一体的编程语言。 在C++中,多了一层封装,就是类(Clas)。类是一个通用的概念,C++、C# 、Java、PHP 等很多编程语言中都有类,可以通过类来创建对象(Object)。在C++中,可以将一个类或多 个类放在一个源文件中,使用时引入对应的类即可。封装让C++多了很多特性,并成为一种 面向对象的程序设计语言。C++中项目的组织方式如图1-2所示。 图1-2C++中项目的组织方式 注意:C语言和C++的源代码格式的区别如下 。 C语言源文件后缀为.c。C++源文件后缀为. 。 .通常,C++集成环境约定当源程序文件的扩展名为.则为C程序; . 件的扩展名为.pp时,则为C++程序。 cpp c时, 而当源程序文 c c源文件会按照C语言的方式编译。pp源文件会按照C++的方式编译。C++几 乎完全兼容C语言,它们的关系类似子(.) 集(C语言)和超集(C++)的概念。 ..c 1.2 C++的特点及应用 1. 1.C++的特点 (1)保持与C兼容。C+ + 既保持了C语言的优点,又对C的类型进行了改革和扩充, C++的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大地促进 了C++的普及和推广。大多数的C程序代码略作修改或不需修改就可在C++的集成环境下 第 1 章 C+ + 概述003 调试和运行。这对于继承和开发当前已广泛使用的软件是非常重要的,因为可以节省大量的 人力和物力。 (2)C++语法灵活,功能强大。C++设计无须复杂的程序设计环境,语法思路层次分明, 语法结构明确,对语法限制比较宽松,给用户编程带来书写上的方便;缺点是由于编译时对语 法限制比较宽松,许多逻辑上的错误不容易被发现,给用户编程增加了难度。C++的很多特 性都是以库或其他的形式提供的,而没有直接添加到语言本身。 (3)面向对象的机制。C++是一种面向对象的程序设计语言,使开发人机交互类型的应用 程序更为简单、快捷。它使程序的各个模块独立性更强,程序的可读性和可移植性更强,程序代 码的结构更加合理,程序的扩充性更强,这对于设计、编制和调试一些大型的软件尤为重要。 (4)适合大型系统的开发。C++可以应用于几乎所有的应用程序。从字处理应用程序到 科学应用程序,从操作系统组件到计算机游戏等,C++都得到了广泛的应用和发展。 2.C++的应 用 C++作为一门高效的程序设计语言,具体应用在以下几个领域 。 (1)系统编程。在该领域,C是主要的编程语言,但是C++凭借其C的兼容,可以方便嵌 入汇编语言,实现底层的调用,适合开发系统级软件,编写驱动程序等。另外还可以开发基础 软件和高级语言的运行时环境,如大型数据库软件、Java虚拟机、C# 的CLR 、Python编译器 和运行时环境,以及目前见到的各种桌面应用软件,如QQ 、杀毒类软件等。 (2)网络编程。在多线程、网络通信、分布应用、服务器端、客户端程序方面,C++有着其 他语言不可比拟的优势。C++拥有很多成熟的用于网络通信的库,其中最具有代表性的是跨 平台的、重量级的ACE 库,该库可以说是C++语言最重要的成果之一,在许多重要的企业、部 门甚至是军方都有应用。 (3)服务端开发。很多互联网公司的后台服务器程序都是基于C++开发的,而且大部分是 Linux,UNIX 等类似操作系统,编程者需要熟悉Linux操作系统及其在上面的开发,熟悉数据库开发, 精通网络编程。也应熟悉游戏的服务器后台,如魔兽世界的服务器和一些企业内部的应用系统等。 (4)嵌入式开发。由于C++既保持了C语言的优点,又对C的功能进行了扩充,因此具 有较高的效率,同时由于它的灵活性,使它在底层开发中被极大地应用。低端嵌入式开发主要 是基于汇编语言和C语言,中端嵌入式开发主要是使用C和C++。 (5)游戏工具开发。目前很多游戏客户端都是基于C+ + 开发的。除了一些网页游戏, C++凭借先进的数值计算库、泛型编程等优势,在游戏领域应用非常广泛。 1.2 开发环境 2.+开发环境介绍 1.1 C+ C++的开发工具很多,而且各有优缺点,初学者往往不知道有哪些常用的开发工具,或者 由于面临的选择比较多而产生困惑。下面介绍几款常用的开发工具,帮助初学者了解 C++开发工具并做出选择。 1.TurboC TurboC 使用了集成的开发环境,采用一系列下拉式菜单,将文本编辑、程序编译、连接以 及程序运行一体化,极大地方便了程序的开发。 C++ 程序设计 2.VisualStudio VisualStudio是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWeb Services、桌面应用程序和移动应用程序。VisualBasic、VisualC++、VisualC#和VisualJ#全都 使用相同的集成开发环境(利用此IDE可以共享工具且有助于创建混合语言解决方案。 IDE), 3.C+ + Builder C+ + Builder具有快速的可视化开发环境,包含一个专业C++开发环境所能提供的全部 功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。它实现了可视化 的编程环境和功能强大的编程语言(C++)的完美结合。 4.VC+ + 0是Mit公司推出的运行在Wis操作系统中的交互式、可视化集成 VC+ + 6.crosofndow 开发软件,它不仅支持C++语言,也支持C语言。VC+0集程序的编辑、编译、连接、调试 等功能于一体,为编程人员提供了一个既完整又方便的开发平台。 5.Eclipse Eclipse是一个开放源代码的、基于Java的可扩展开发平台。这个组件主要针对希望扩 展Eclipse的软件开发人员,因为它允许构建与Eclipse环境无缝集成的工具。 + 6. 1.2 ViulSuio2015开发环境 2.satd VisualStudio简称为VS,VisualC++简称为VC 。最初VisualC++发布时还没有Visual Studio,VisualC++是一个独立的开发工具,与VisualBasic等并列,最后微软将它们整合在一 起组成了VisualStudio。 VisualStudio是微软开发的一套工具集,它由各种各样的工具组成,VisualC+ + 就是 VisualStudio的一个重要的组成部分。在VisualStudio中,除了VC,还有VisualC#,Visual Basic,过去还有VisualJ#,现在还有VisualF#等组件工具。VisualStudio可以用于生成 Web应用程序,也可以生成桌面应用程序。 1.3 C+ + 程序框架及运行过程 1.1 建立C++程序 3. 1.VS2015下建立相关页面 (1)打开VS2015后会出现主界面,如果没有“ 解 决方案资源管理器”,可以从视图里打开,如图1- 3 所示 ( 。 2)从“文件”中,新建“项目”,在弹出对话框左 侧 “项目类型”中选择Win32,在“模板”中选择“Win32 控 制台应用程序”。然后,在“名称”文本框中输入项目 名 称exe1,并在“位置”中输入储存位置,如图1-4所示 。 单击“确定”按钮,选择随后窗口里的“空项目”(其他 项 不做修改),单击“完成”按钮,如图1-5所示 。 (3)做完上一步骤后,“解决方案资源管理器”会图1-3 解决方案资源管理器 第 1 章 C+ + 概述005 图1-4 新建项目1 图1-5 新建项目2 发生改变,右击其中的“源文件”,选择“添加”→“新建项”,如图1-6所示。随后会出现图1-7, 按图选择各项,并在“名称”中输入程序名exe_1.最后单击“添加”按钮。 1c 2. 输入程序 pp, 【例11】输入如下符合C++语法规范的语句,提示“”,用户输入名字* -inputyourname: **后,在屏幕输出welcome!!!***,代码如下所示。 C++ 程序设计 006 图1-6 新建.cpp源文件1 图1-7 新建.cpp源文件2 1. /*程序名:exe1_1*/ 2. #include 3. #include 4. using namespace std; /*预处理文件*/ 5. void main() //主函数 第1 章 C++ 概述007 6. { 7. string name; 8. cout<<"input your name:" <>name; //输入 10. cout<<" welcome!!! "<。用“;”表示语句结束。如果比较长可以分多行写,多个语句也可以写在一行。 (5)第8行“cout<<"inputyourname:" <>name;”为标准输入流对象,通常代表键盘,与提取操作符>>连用, 使用格式为: C++ 程序设计 008 cin>>对象1>>对象2>>...>>对象n; 表示从标准输入流对象键盘中提取n 个数据分别给对象1、对象2……对象n。 思考:将#include改为#include是否可以运行? 有什么 不同? 答:不可以。格式不一样,两者是两个不同的文件。 (1)C语言与早期的C++头文件名为。新的C++标准为了对C语言以及 早期C++文件提供支持,附带了这些头文件。因此,当使用时,相当于在C中 调用库函数,使用的是全局命名空间,也就是早期的C++实现。 (2)没有后缀,使用时,由于该头文件没有定义全局命名空间, 必须使用usingnamespacestd语句,这样才能正确使用cout。命名空间std封装的是标准程 序库的名称,标准程序库为了和以前的头文件区别,一般不加.h。 4.std和namespace std:标准命名空间。C++标准程序库中的所有标识符都被定义于名为std(standard)的 namespace中。 namespace:命名空间,是标准C++中的一种机制,可以在不同的空间内使用同名字的类 或者函数,用来控制不同类库相同名字的冲突问题。库或程序中的每一个C++定义集被封装 在一个命名空间中,如果其他的定义中有相同的名字,但它们在不同的命名空间,则不会产生 命名冲突。 格式: namespace 命名空间名 { //命名空间成员 } 使用方法如下。 (1)直接指定标识符。 std::cout <<"hello"< #define PI 3.14159 //宏定义。宏名是PI,PI 将用3.14159 替代 using namespace std; void main( ) { double s,r; cout<<"input r :"; cin>>r; s=PI*r*r; cout<<"the result is :"< #define PI 3.14159 #define S(r) PI*r*r using namespace std; void main( ) { double s,r; r=3.0; s=S(r);