Chapter 1. C++概述

1.1 C++简介


        C++在中国大陆通常被读作“C加加”,而在欧美国家C++通常读作“C plus plus”,该语言的前身是C语言。

       1969年美国贝尔实验室的肯.汤普森用汇编语言编写第一个UNIX操作系统,接着,他又根据英国剑桥大学的马丁.理查德设计的BCPL(Basic combined programming language,基本的组合编程语言)语言,为UNIX设计了一种便于编写系统软件的语言,命名为B。1972-1973年间,同在贝尔实验室的丹尼斯.里奇改造了B语言,为其添加了数据类型的概念,并将其命名为C。1973年,肯.汤普森小组在PDP-11计算机上用C语言重新改写了UNIX的内核,与此同时,C语言编译的程序也被移植到IBM 360/370、Honeywell 11以及VAX -11/780等计算机上,使春迅速成为应用最广泛的系统程序设计语言。然而,C语言也存在一些缺陷,比如,其类型检查机制相对较弱,缺少支持代码重用的语言结构等,造成用C语言开发大程序比较困难,为了克服C语言存在的缺点,贝尔实验室的Bjarne Strousrup博士及其同事开始对C语言进行改进和扩充,奖“类”的概念引入了C语言,构成了早期的C++语言,那时是1983年。后来,Bjarne Strous-rup博士和他的同事们又为C++引进了运算重载、引用、虚函数等许多特性,并使之更加精练,于1989年推出了 AT&T  C++ 2.0版。随后美国国家标准化协会 ANSI(American national standard institute )和国际标准化组织 ISO(Intern-ational standard organization)一起对C++进行了标准化工作,并于1998年正式推C++语言的国际标准 "ISO/I EC: 98-14882"。各软件厂商推出的C++语言编译器都支持该标准,并均有不同程度的拓展。

       C++支持面向对象的程序设计方法,特别适合于开发中型和大型的软件项目,在开发时间、费用软件的重用性、可扩充性、可维护性和可靠性等方面,C++均具有很大的优越性,同时,C++又是C语言的一个超集,这就使得很多C语言代码不需要经过修改就可被C++编译通过。

       C++是为支持面向对象而开发的一种通用的程序设计语言,开发的宗旨是使面向对象程序设计技术和数据抽象成为软件开发者的一种真正实用的技术。

1.2 C++与C的区别

        如果有人认为C++只是C语言的扩充和补充,那么它就大错特错了,C++与C语言最大的不同在于解决问题时的思维方式不同。C++语言采用面向对象思维,而C语言采用面向结构思维。

      面向结构思维的宗旨是将一个大程序拆分成许多很小的结构,结构就是完成一个或多个功能的代码块。例如,计算 1 + 1 = ?,假如算出等于2,那么就实现了一个功能,而实现1 + 1 = 2的代码块就可看作是一个结构,或者叫做方法,亦即函数。

       面向结构思维就是要将一个大程序化分成若干个很小的结构,每个结构都完成一个或多个功能,所有结构集合起来就可以完成一个大程序的编写工作。

       然而,随着软件工程的发展,软件越来越大,数据越业越多,面向结构程序设计所带来的问题也越来越多,越来越严重,甚至曾一度导致“软件危机”。面向对象程序设计就是为了解决“软件危机”而创造的,面向对象思想中,增加许多了编程理念,它将一个大程序拆分成若干个对象,在每个对象中再封装部分数据和实现功能的方法,一个对象要想访问加一个对象,必须征得该对象的同意,而该对象中数据的改变也不会影响到其他对象,从而解决了数据的安全性问题。另一方面,面向对象程序设计允许将具有相同特征的对象划分为一类,而同一类的对象又可以向下派生,父生子,子生孙,代码不以修改即可重复利用,从而实现了代码的重用。

       面向对象编程的另一个优点是是支持多态性。多态性就是指对不同的对象采取相同的方法会导致不同的行为或结果。例如,在模拟一个足球游戏时,不同的足球运动员代表不同的对象,而相同的方法是指射门这同一动作,由于运动员的技术水平不同,所以技术好的运动员进球的概论要高些,而技术差的运动员射门不进的概论要高些。

1.3 学习C++之前需要先学C吗?

        C++是为了解决C语言带来的问题而创造的,C语言由于自身能力的不足,因此它只能将任务细分成许多小任务,这样它在处理小程序时比较灵活且效率很高,但是当程序比较复杂,规模比较大时,C语言就会凸显出它的不足,它很难或者无法处理大程序,而C++增加了大量的编程理念,它有能力将整个程序划分成一个个较大的对象,每个对象中又包含了若干个小任务和数据,对象与对象相互作用或协调,促成一个大程序。

       由于C语言的不足,它只能从较小的角度来考试问题,所以当程序趋向于大的今天,它越来越不能胜任工作,而C++的功能非常强大,它可以在整体上观查和剖析问题,这样它就可以解决一些相对复杂的问题。

       假如你已经学习了C语言,不必感到沮丧,C语言的是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,只需要转换一下思维方式,那么再进一步学习C++时也比较简单。

1.4 C++与其他语言的区别

       精通了C++以后,会发现C++与其他编程都是相通的,不同的仅仅是外在表现形式。例如,PASCAL语言定义变量的次序与C++相反,C++是先定义类型后定义变量名,而PASCAL则是先定义变量名再定义类型,而JAVA与C#则是在安全性与易学性等方面与C++不同,将C++的一些高级特性去掉,而换以另一种表达方式来阐述它的其他特性。因此,学会了C++,那么至少掌握了其他语言的90%,另外的10%则仅仅是在描述同一概念时所采取的方式不同而已。

1.5 C++与Visual C++

     Visual C++不是一门计算机语言,它是当今Windows操作系统下最流行的C++集成开发环境之一,是使用最广泛的C++编译器,目前常用的版本有 VS 2005、VS2008、VS2010、VS2012、VS2013等。编译器的作用是将C++源代码编译成汇编文件,转换为中间文件.obj文件,然后再使用链接器将相关的中间文件连接在一起,生成可执行的二进制文件,其过程如下:

      (1)源程序经过预处理后交给编译器;

      (2)如果代码无误,编译器将代码生成汇编程序,再生成若干个目标程序;

      (3)链接器负责对目标程序进行连接,生成可执行的程序。

1.6 面向对象的程序设计语言有哪些?

       目前,面向对象的程序设计语言很多,如:Smalltalk、Java、Visual Basic、C++等等,其中C++是当今应用最广泛的面向对象程序设计语言。

1.7 C++能做些什么?

       C++涉及的领域很广泛,从大型项目到小型的应用程序,C++都可以开发,比如操作系统、大部分的游戏、图形图像处理、科学计算、嵌入式系统、驱动程序、没有界面或只有简单界面的服务程序、军工、工业实时监控软件系统、虚拟机、高端服务器程序、语音识别处理程序等等。

      C++的优点吸引了很多程序的开发,用C++开发的优秀作品数不胜数,下面列出一些著名的用C++开发的的软件产品。

      1.办公应用 微软公司的Office系列软件;

      2.图像处理 Adobe公司的所有主要应用程序都是用C++语言开发而成的,大名鼎鼎的Photoshop就是其中之一;

      3.网络应用 google网站的web搜索引擎;

      4.网络即时通信 QQ;

      5.手机操作系统 Symbian;

      6.游戏开发方面 大部分的网络游戏和单机游戏都是用C++语言编写的,单机版的游戏如Windows下自带的游戏都是用C++写的,网络游戏方面,比如腾讯公司的大部分QQ游戏也是采用C++编写的。
                           
       注:以上内容是本人在学习C++时所参阅书籍的认为比较好的概念解释或说明,如有雷同,敬请谅解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值