- C++面向对象程序设计(微课版)
- 鲁丽 张翼 殷福安
- 1475字
- 2025-03-21 19:14:49
1.3 C++对面向对象技术的支持
1.3.1 C++的发展历史
C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。C语言是1972年由美国贝尔实验室的D.M.Ritchie开发,它采用结构化编程方法,遵从自顶向下的原则。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其他高级语言,但在编写大型程序时,C语言仍面临着挑战。1983年,在C语言的基础上,贝尔实验室的Bjarne Stroustrup推出了C++。C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言,它支持过程化程序设计方法,增加了面向对象的能力,是一种混合型程序设计语言。为了扩充C++的设计能力,许多大学和公司为C++编写了各种不同的类库,如Microsoft公司的MFC,奇趣公司的Qt,MFC在国内外都得到了广泛应用,Qt支持移动平台的特性也得到了广泛应用。
C++目前在各个领域都有广泛的应用。早期它主要应用于系统程序设计,很多系统的关键部分都用C++设计;C++还用于编写设备驱动程序,或者其他对运行效率及响应时间有特殊要求的系统中,如电信领域核心控制程序。C++还能被应用到游戏、图画、设计等领域。
1.3.2 C++——带类的C语言
C语言是C++的基础,C++和C语言在很多方面是兼容的。
C语言是一个结构化语言,它的重点在于算法与数据结构。C语言程序的设计首先考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。而C++程序,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。所以C和C++的最大区别在于它们解决问题的思想方法。
C++对C语言的“增强”,表现在以下六个方面。
(1)类型检查更为严格。
(2)增加了面向对象的机制。
(3)增加了泛型编程的机制(Template)。
(4)增加了异常处理。
(5)增加了运算符重载。
(6)增加了标准模板库(STL)。
1.3.3 C++的优点与缺点
1. C++的优点
C++简洁灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高。而且C++同时具有高级语言与汇编语言的优点,与其他高级语言相比,C++具有可以直接访问物理地址的优点;与汇编语言相比又具有良好的可读性的可移植性。
总之,C++的主要特点表现在两个方面,一是兼容C语言,二是支持面向对象的方法。它保持了C语言的简洁、高效的接近汇编语言等特点,对C语言的类型系统进行了改良和扩充,因此C++比C语言更安全,C++的编译系统也能检查出更多的类型错误。另外,由于C语言的广泛使用,在一定程度上也促进了C++的普及和推广。
C++最有意义的方面是支持面向对象的特征。虽然与C语言的兼容使得C++具有双重特点,但他在概念上与C语言完全不同,更具面向对象的特征。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序变得更为简单、快捷。包括Boost、Qt、MFC、OWL、wxWidgets、WTL在内的很多优秀的人们一般认为,使用Java或C#的开发成本比C++低。但是,如果充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。程序框架都使用C++。
2. C++的缺点
C++由于语言本身过度复杂,甚至使人们难以理解其语义。C++的编译系统受到C++的复杂性的影响,非常难以编写,即使能够使用的编译器也存在了大量的问题,这些问题大多很难被发现。
由于本身的复杂性,复杂C++程序的正确性也难以保证。