C++在C的基础上深加了对面向对象编程和泛型编程的支持。
C++面向对象的新技术是:对象、类、封装、数据隐藏、多态、继承。
C++融合了3种不同的编程方式,C代表的过程性语言,C++在C语言基础上添加的类代表的面向对象语言、C++模板支持的泛型编程。
使用C++的原因之一是为了利用其面向对象的特征,要利用这种特征,必须对C语言有较深入的了解。因为它提供了基本类型、运算符、控制结构和语法规则。从C过渡到C++的时候不再是仅仅学习更多的关键字(学习C的过程就是学习关键字的过程)和新的数据结构,从C过渡到C++的学习量就像从头学习C的内容一样大,在过渡到C++的时候,必须摒弃一些编程习惯,学习C++需要更多的拓展思维。
20世纪70年代,贝尔实验室的Dennis Ritche致力于开发UNIX操作系统,希望有一种语言能将低级语言的效率、硬件访问能力和高级语言的通性、可移植性融合在一起,于是他在旧语言的基础上开发了C语言。其所遵循的旧理念是强调程序的算法方面。从概念上说过程化编程首先要确定计算机应采用的操作,然后使用编程语言来实现这些操作。C语言还采用了结构化编程和自顶向下的设计(C将大型程序分解为小型、编辑管理的任务)
面向对象编程(OOP)强调的是数据,OOP不同于过程性语言试图使问题满足语言的过程新方法,而是试图让语言来满足问题的要求。其理念是设计与问题本质特性相对应的数据格式。
在C++中,类是一种规范,它描述了这种新型数据格式对象是根据这种规范构造的特定数据结构。
类规定了可使用哪些数据来表示对象,以及可以对这些数据执行哪些操作。
OOP程序设计方法首先设计类,他们准确的表示了程序要处理的东西,然后设计一个使用这些类的对象的程序,从低级组织(如类)到高级组织(如程序)的处理过程叫做自下向上的编程。
**OOP程序设计不仅仅是将数据和方法合并为类定义。**多态能够为数算符和函数创建多个定义(通过编程上下文来确定使用哪个定义),继承让能使用旧类派生出新类。
OOP引入了很多新的理念,使用的编程方法不同于过程性编程。它不是将重点放在任务上,而是放在表示概念上。
设计有用、可靠的类是一项很艰巨的任务,幸运的是在编程中可以使用已有的类(STL),C++真正的优点之一是:可以方便的重(chong)用和修改现有的经过只系测试过的代码。
泛型编程强调的是独立于特定数据结构,和OOP侧重点不同,OOP是一个管理大型项目的工具,而泛型编程提供了执行常见任务的工具。术语泛型指的是创建独立于类型的代码。
OOP不凡赋予了C++语言将问题所涉及的感念联系起来的能力。C部分则赋予了C++语言紧密联系硬件的能力。如果忽略C++面向对象的特性,将错过很多有用的东西。