1.2.2 C++语言的特点
与C语言不同,C++是一种广泛使用的面向对象的程序设计语言,其包括了C的所有特征、属性和优点(如高效、灵活性),同时改进了C的一些不足,并且支持面向对象的程序设计。
C++语言的特点主要表现在:
(1) 保持与C兼容;
(2) 可读性更好,代码结构更合理;
(3) 生成代码的质量高;
(4) 可重用性、可扩充性、可维护性和可靠性有所提高;
(5) 支持面向对象的机制。
C++语言中与面向对象有关的特征如下。
(1) 类和数据封装
C++支持数据封装,将数据和对该数据操作的函数封装在一起作为一种数据类型,称为类。同时提供一种对数据访问严格控制的机制,封装体通过操作接口与外界交换信息。
(2) 结构作为一种特殊的类
在C语言中可以定义结构体,但是这种结构只包含数据,不包含函数。C++中的类是数据和函数的封装体,在C++中,结构可以作为一种特殊的类。
(3) 构造函数和析构函数
构造函数是类内和类同名的成员函数,创建对象时对类的数据成员进行初始化。析构函数的功能是用来释放对象。
(4) 私有、保护和公有成员
在C++类中可以定义3种不同访问控制权限的数据成员。其分别是私有(private)、保护(protected)和公有(public)成员。私有成员只有类本身定义的函数才能访问,而类外的其他函数不可以访问;保护成员只有派生类可以访问,而在类外不可以访问的成员;公有成员是在类外也可以访问的成员,是该类与外界的接口。
(5) 对象和消息
对象是类的实例,对象之间通过消息来实现合作,共同完成某一任务。每个对象根据收到消息的性质来决定需要采取的行动,以响应这个消息。
(6) 友元类和友元函数
类中的私有成员是不允许类外的任何函数访问的。但是友元打破了类的这一限制,破坏了类的封装性,它可以访问类的私有成员。友元可以是类外定义的整个类,称为友元类,也可以是类外的函数,称为友元函数。
(7) 运算符和函数名重载
运算符重载和函数名重载都属于多态,多态是指相同的语言结构可以代表不同类型的实体,或者对不同类型实体进行操作。C++允许相同的运算符或标识符代表多个不同实现的函数,这称为标识符或运算符重载,用户可以根据需要定义标识符重载或运算符重载。
(8) 派生类,继承性
一个类可根据需要生成派生类,派生类继承了基类的所有方法,同时还可定义新的不包含在父类中的方法。派生类包含从父类继承过来的数据成员和自己特有的数据成员。
(9) 虚拟函数,多态性,动态联编
C++可以定义虚函数,通过虚函数实现动态联编。动态联编是多态的一个重要特征。多态性形成由父类和其子类组成的一个树型结构。在这个树中的每一个子类可接收一个或多个具有相同名字的消息。当一个消息被这个树中的一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态中的这一特性允许使用高级抽象。