第六章我们学习的是类。类是一种类型,是对一组具有相同属性和行为的对象的抽象。
类在进行数据抽象和封装之前需要定义一个抽象数据类型。类就类似c语言中的函数,在主函数之前定义。
很多时候遇到那种几种变量有关系但类型不同时就需要使用类来联系它们。在定义类时在类里定义每个变量的类型,之后在使用时要先定义一个类型是定义的类的对象,之后使用时要用对象名加类内变量名来对类内的变量进行操作。在类内也可以定义函数,使用时要对象名加函数名来进行操作。同时也可以将函数定义在类外,只是在定义时要在前边加类名。在写类的代码时可以写类的头文件,在长的代码中使用时只需包含这个头文件就可以实现这个类的功能了。当使用类的头文件时可能会遇到头文件名称重复的问题,这时就需要包含守卫语句了,在类的头文件前加上不同的包含守卫语句来区分。
在编写程序时有些不想让用户访问时就要考虑对信息的隐藏了。在c++中可以通过限定成员的访问权限来设置边界,实现信息的隐藏。在定义struct类时成员默认限定为公开的,若想对信息进行隐藏就要在定义类内变量前加private。而class类默认成员为私有类型,若需要一些变量在全文中都能访问,就要在这些变量前加public。有些信息需要在整个程序中使用但又不想让他人知道时可以将变量设为私有类型,但将引用这个变量的函数设为公共类型的。这种函数被称为访问器和修改器。使用访问器时用get加变量名,使用修改器时用set加变量名。若在编程序时需要用一个类外的函数用到类内的私有数据时要将这个函数前加friend,声明为友元。
在创建对象时要在划分出一块区域。account类可以使用了动态管理的指针数据成员,所以第一个操作是open(),用new给指针分配空间,最后一个操作必须是close()来释放动态分配的存储空间。构造函数是一种特殊的成员函数,能在创建对象时被自动调用。构造函数的名字要和类的名字相同。构造函数可以重载,在创建对象时会自动根据对象的初始值类型来调用相应的构造函数。委托构造函数使用所属类的其他函数来执行自己的初始化过程,可以简化程序内容。析构函数起到在对象生存期结束时返回相关资源和自动释放资源。
const可以限定数据对象和函数。只有声明为const的函数才能被const对象调用。const对象不能调用非const函数,但是非const对象可以调用const成员函数。