这几天复习了c++primer的第12章类的讲解,虽然之前这一章也看了几遍,但是我终究觉得书读百遍其义自现,现在我给出一些我学习的心得,欢迎大家一起探讨。
首先,类可以说是c++的灵魂,正因为c++中有类的出现,提高了代码的复用率,实现了真正的面向对象的编程,我们可以使用别人编写设计的类,只要我们知道这个类的成员函数和成员数据,我们就可以使用这个类而不必去考虑这个类的实现方式。c++中就存在着很多这样的类,最经典的莫过于微软自己开发的windows界面库MFC了,这个类封装了windows API函数,我们在设计windows桌面应用程序时,只需要调用相应的函数就可以设计出很漂亮的桌面应用程序,这是很方便的。说到类,首先要讲到的是,类是怎么声明和定义的,类的定义和声明可以使用两个关键字实现,分别是class和struct,他们没什么太大的区别,最主要的区别是class中默认的访问权限是私有的,而struct默认的访问权限是公有的。类当中包含着一个隐含的成员是this指针,this指针指向自己,我们可以通过this->...来调用成员,但是一般不用这样做,但是也有必须要使用this指针的地方,比如我们成员函数返回的类型为类类型的引用,那么我们必须要使用this指针作为返回。类定义中首先出现的函数是类构造函数,即使用户没有定义构造函数,编译器也会自己提供一个默认的构造函数,但是只要用户自己定义了类的构造函数,那么编译器就不会提供默认构造函数。用户可以重载构造函数,当然自己也可以定义默认构造函数(没有形参的构造函数)。
关于类的访问权限的问题,访问权限分为公有和私有(后面还会介绍保护),类的使用者只能访问类的公有成员,私有成员函数和成员变量只能在类的作用域中进行访问,如果别的函数或者类想访问类的私有成员,那么我们可以通过设定该函数或者类为此类的友元,这样就能访问类的私有成员函数和变量了。
类当中也存在着static静态成员,而静态成员不同于其他的成员,因为静态成员不属于类的对象,而独属于这个类,我们不能在类中声明类本身类型的变量,但是我们可以将这样的变量声明为静态变量,也可以声明为这样的变量的指针或者引用。