经过一个多月的学习,我们已经结束了类与对象的学习。
类的基本思想是数据抽象与封装,其中数据抽象是一种依赖接口和实现分离编程的技术。,在c++中扩展了结构体的概念,使之可以包含函数作为成员,这函数被称为成员函数,数据则被称为数据成员,这样的结构体被称为类这种类型的变量被称为对象。
为了解决一些数据可能未经允许被修改的情况,就要对数据进行隐藏,要对其加上访问限定符,访问限定符包括public(公有成员声明)private(私有成员声明)protected(被保护成员声明)其中私有成员不能被类外修改。
将数据跟操作捆绑在一起,并加上访问控制,这在面向对象中称为封装。
面向对象编程的主要工作就是创建一组对象并给他们发送消息。
this指针
每个成员函数都有一个隐含的参数,指向接收消息的对象,称为this指针,它的主要作用是区分与局部变量重名的数据成员,返回当前对象,获取当前对象的地址。
在某些情况下,有的函数需要访问一个类的私有成员,这就需要用到友元(friend),友元必须在被访问的类中声明,一个类的友元可以是全局函数,另一个类的函数或者是另一个类。
定义了结构体,还需要对数据进行初始化,这就要用到构造函数,构造函数需要定义一个有参数的,一个无参数的。
初始化由构造函数完成,引用成员的初始化也应该在构造函数中,但是又不能在函数体中使用赋值方式提供初值,这种操作叫做构造函数初始化列表
而初始化列表中初值排列的顺序不影响实际的初始化程序。
另外还有委托构造函数,即一个构造函数调用其他构造函数。
此外还有析构函数,它可以初始化成员,有时还要为指针成员在动态存储区分配空间。
还有const数据成员,const成员函数都是不可修改的。
最后就是static成员(静态数据成员)
static数据成员不属于某个特定对象的,所以不能在构造函数中初始化。
static成员只能定义一次,因此一般不在头文件中定义而在包含成员函数定义的源文件中。
最后在进行程序调试时,要一个一个函数的进行调试,两个类之间要空出一行,在定义完类后,要检验类中的各个成员函数是否可用,要用一组数据测试。