类是C++中最重要的特征,我们用它来定义自己的抽象数据类型。C++语言以前叫做c with classes(带类的C),你从这个名字就可以看出来类在C++的重要性了吧!
1.我们可以用两种关键字去定义,struct和class。刚开始学的C,知道struct,那么它和class的区别是什么呢?
在C++中出现了共有成员(public),私有成员(private),以及受保护的成员(protected),意思就是程序可以访问类的公有成员,但是却不能去访问私有成员,也就是私有成员 帮我们把实现的细节给封装起来了。而struct 直接默认自己内部的成员是公有的,仅此而已。
2.类的成员包括什么呢?
包括三类:1.数据成员;
2.函数成员;
3.类型别名;(也就是typedef啦,一般把它放到公有成员里面,让程序其他部分也可使用)
a.函数成员
与C比较,C++中有两个新的函数名词,构造函数和析构函数,其中构造函数是对数据成员进行初始化的,析构函数的作用正好与构造函数相反,其中二者函数名均与类名一样,析构函数与构造函数的区别是在函数名前多了一个‘~’。
注意:1.在构造函数的初始化列表中不适用等号进行初始化,而是适用圆括号().
2.在初始化列表中要注意初始化顺序,最好与成员被声明的顺序一致,可避免用未初始化的成员去初始化别的成员。
你可以自己定义构造函数,也可是不定义,系统会为你自动生成一个默认的构造函数,我们也可以去重构我们的构造函数,不过一旦你定义了构造函数,哪怕它啥都没干,系统也不会生成默认构造函数了。
系统默认的构造函数对类类型会调用类自身的构造函数,如string类型,而它对内置和符合类型(指针与数组)不会进行任何的初始化,所以我们应该自己去定义构造函数。
b.关键字mutable,friend,static
1.在const函数中如果我们需要改变莫个成员的值,那么你可以在前面加个mutable.
2.friend是用来声明友员的,就是指定信赖的函数或类,使得它们可以访问自己类中的私有成员(感觉像是让外人可以进自己家的后花园)
3.static类成员与全局变量差不多,但是这个变量只能是这个类中的成员可以访问,其他类不能访问,而且这个变量是这个类所有对象所共有的。一般我们用静态函数来对静态 数据进行操作。
这里是我找到的对静态类型的一个总结,感觉不错,贴出来,大家一起学习
成员函数:无论静态函数还是非静态函数,都是属于类的(这一点与数据成员的静态非静态不同),对象并不拥有函数的拷贝.两者的区别在于:非静态的函数由类对象(加.或指针加->)调用,这时将向函数传递this指针.而静态函数由类名(或对象名)调用,但静态函数不传递this指针,不识别对象个体,所以通常用来对类的静态数据成员操作.