在oop中使用类编程的一种模型就是客户/服务器模型。客户是使用类的程序。类声明(包括类方法)则构成了服务器,他是程序可以使用的资源。类中通过共有方式定义的类方法好比服务器的接口,服务器的责任是根据接口(类方法)准确地执行,服务器设计人员(定义类的程序员)只需在对应的接口下设计类实现的细节,而不需修改接口。客户则通过接口使用服务器的资源。这样程序员可以独立地修改服务器和客户,对服务器的修改就不会影响客户行为。
为了便于程序的修改和可读性,通常,一个程序分为三个文件,头文件和两个源文件。头文件用来声明类数据及其方法,一个源文件用于定义类的方法,也就是定义服务器接口的实现细节,这样把实现细节与声明分开叫做封装;另一个用于编写主函数,也就是编写客户的行为。
类的声明包括声明数据成员和类方法(也就是接口)。类数据通常为private型,主要是为了数据隐藏。也有将函数声明为private型的,通常用于类数据的内部处理,且要在声明的时候直接定义。private类型的数据只能通过public类型的类方法调用。在外部定义函数方法时,要使用作用域解析运算符(::)来标示函数所属的类。有了作用域解析运算符,我们就可以将不同的类方法的名称取为同一个。
在程序中使用类时,可以使用声明类变量或者使用new为类对象分配存储空间来创建类对象。在使用类方法时,要通过类对象来调用,此时要使用成员运算符据点(.)。
由于类的数据是private型,只能通过成员函数来访问。因此,在创建类变量时,就不能对其进行初始化。构造函数则用来将数据复制给数据成员。构造函数的名称与类名称相同(同时,构造函数的参数名不要与类成员名相同)。每个类可以通过函数重载创建多个同名的构造函数,但每个构造函数的参数列表必须不同。默认的构造函数没有参数。如果程序没有定义任何构造函数,编译器将为程序定义一个默认构造函数。每个类只能有一个析构函数,其名称为类名称前加上~。
如果需要创建同一个类的多个对象,则可以创建对象数组。对对象数组的初始化,应使用构造函数为每个元素进行初始化。若定义了多个构造函数,则可以对不同的元素使用不同的构造函数。
this指针:
类作用域:
抽象数据类型: