C++语言是C语言的拓展,C语言是面向过程的,C++在C的基础上增加了面向对象的方法。
所谓面向过程的编程思想,就是分析解决问题的步骤,将这些步骤用一个个函数实现,最后一个个调用。
所谓面向对象的编程思想,就是将任何事物都看成一个对象,对象有各种属性(attribute)和行为(behavior),在解决问题的过程中,将系统分解,使之模块化。
相对于面向过程的思想,面向对象的思想更适用于大型系统的开发。
面向对象的程序设计有四个主要特点:抽象、封装、继承、多态。
抽象(abstract):就是将不同对象的共性归纳、集中。在C++中,类是对象的抽象,对象是类的实例(instance)。
封装(encapsulation):就是将对象的内部实现和外部行为分隔开来,人们通过接口来进行外部控制,而不用关心内部细节。
继承(inheritance):在一个已存在的类的基础上建立一个新的类,新的类具有它所继承的类的全部特性,且可以增加一些新的特性。继承可以说是面向对象的程序设计最重要的特点。它实现了软件的可重用性(reuseability)。
多态(polymorphism):当向不同的对象发送同一消息时,不同的对象在接收到消息后会产生不同的行为。即,每个对象可以用自己的方法去响应共同的消息。函数的重载就是多态一个很好的例子。
C++作为一种面向对象的语言,所有内容都体现出了面向对象的思想。例如,定义一个整型变量int a,整型int就是一个类,变量a是这个类的一个对象,当这个对象被建立时,类的构造函数(constructor)被调用,用来初始化这个对象。C++的内置类型(built-in type)的默认构造函数不对对象进行初始化,所以定义int a后,a是没有初始化的变量。而C++中的string和vector类型,它们的默认构造函数将对象初始化为空,所以当定义string a后,a已被初始化,初始化为的值为空,即a是一个空的字符串。
要注意初始化为空和没有初始化是两个不同的概念,当没有初始化时,输出这个变量,变量的值是不定的,不同的编译器会输出不同的值,而初始化为空以后,变量已经被初始化了,在不同的编译器下,结果是一样的。
The End